L'utilisation de grep pour de multiples motifs de recherche
Considérer que j'ai la suite de flux de données:
BODY1
attrib1: someval11
attrib2: someval12
attrib3: someval13
BODY2
attrib1: someval21
attrib2: someval22
attrib3: someval23
BODY3
attrib1: someval31
attrib2: someval32
attrib3: someval33
Je veux extraire seulement attrib1 et attrib3 pour chaque CORPS, c'est à dire
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33
J'ai essayé
grep 'attrib1\|attrib3'
, selon ce site mais qui n'a rien retourné. grep attrib1
et grep attrib2
faire renvoyer des données, mais juste pour le seul motif spécifié.
Non pas qu'elle n'en résout votre problème, mais il peut être plus facile à suivre et plus rapide pour grep pour trouver si votre regex est
que faire si il n'y avait pas commong modèle entre attrib 1 et 3? si elles étaient nommées quelque chose completelty différents?
dans l'exemple réel, mon attrib1 est appelé foo et attrib3 est appelé à la barre...
Puis le
Je ne comprends pas -- est-il pour être grep? axiom a montré comment le faire, mais pourquoi ne pas simplement utiliser awk? Suis-je le seul qui trouve qu'il est plus simple pour ce genre de tâches?
attrib[13]
. Faire la partie commune à plus long est généralement mieux.que faire si il n'y avait pas commong modèle entre attrib 1 et 3? si elles étaient nommées quelque chose completelty différents?
dans l'exemple réel, mon attrib1 est appelé foo et attrib3 est appelé à la barre...
Puis le
attrib[13]
astuce ne marchera pas.Je ne comprends pas -- est-il pour être grep? axiom a montré comment le faire, mais pourquoi ne pas simplement utiliser awk? Suis-je le seul qui trouve qu'il est plus simple pour ce genre de tâches?
OriginalL'auteur amphibient | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
grep -e 'attrib1' -e 'attrib3' file
De la
man
page :Edit :
Sinon , vous pouvez enregistrer des modèles dans un fichier et d'utiliser le
-f
option :Comme la page de man dit, -e est spécifiée par POSIX, donc ça devrait marcher. Je vais essayer et de trouver d'autres.
Vous pouvez essayer et voir si
-f
option est de toute utilisation. Notez également que, pour votre exemple,grep 'attrib1\|attrib3'
devrait aussi bien fonctionner.OriginalL'auteur axiom
commande très simple:
attrib1: someval11
attrib3: someval13
attrib1: someval21
attrib3: someval23
attrib1: someval31
attrib3: someval33
OriginalL'auteur SteveScm
Aussi egrep;
OriginalL'auteur Mike Makuch
Cela fonctionne, avec GNU grep 2.6.3
ou
Ce que vous recherchez, un 1 ou 3 à la fin du premier mot de la ligne et suivi par un colon?
OriginalL'auteur Sirch
Il dépend du shell que vous êtes.
grep -iw 'patter1\|patter2\|pattern3'
fonctionne sur le shell bash où, comme il ne fonctionne pas sur le korn shell. Pour korn shell, nous pourrions avoir à essayergrep -e pattern1 -e patter2
et ainsi de suite.grep
commande externe prend en charge.OriginalL'auteur Siva