2010-09-06 6 views
1

Je fais ce qui suit afin d'obtenir tous les WORD dans le fichier, mais pas dans les lignes qui commencent par « // »grep ou sed ou awk + correspondance MOT

grep -v "//" file | grep WORD 

puis-je obtenir une autre suggestion élégante de trouver tous WORD dans le fichier, sauf les lignes commençant par //

Remarque: « // » existe pas nécessaire dans la première de la ligne, il est peut-être des espaces après la première de la ligne, puis apparaît //

par exemple

plus fichier

// WORD 

AA WORD 

     // ss WORD 

Lidia

+0

votre approche laisse tomber cette ligne: WORD aa; // le mot aa – harper

+0

Aussi: votre 'grep WORD' va aussi correspondre à toutes les instances de 'SWORDS' sur une ligne. Est-ce intentionnel? – Johnsyweb

Répondre

1
grep -v "//" file | grep WORD 

Cela permettra également d'exclure toutes les lignes avec "//" après WORD, tels que:

WORD // Cette ligne ici

Une meilleure approche avec GNU Grep serait:

grep -v '^[[:space:]]*//' file | grep 'WORD' 

... qui d'abord filtrer les lignes commençant par plus ou zéro espaces et une chaîne de commentaire.

Essayer de mettre ces deux conditions dans une seule expression régulière n'est probablement pas plus élégant.

0
awk '!/^[ \t]*\/\// && /WORD/{m=gsub("WORD","");total+=m}END{print total}' file 
+0

comment compter le WORD avec votre exemple (si je veux savoir combien de WORD j'ai dans le fichier) – lidia

+0

@lidia: Comment * compter * le nombre de mots dans un fichier est une question distincte. Vous devriez soit mettre à jour votre question ou en demander une nouvelle. – Johnsyweb

Questions connexes