1 votes

Utilisation de la commande egrep pour trouver les lignes commençant par un caractère et contenant également une chaîne de caractères.

Disons que j'ai un fichier qui contient des ls -l sortie :

waaa- foo.pdf
-bbb- foobar.pdf
-ccc- foobar
waaa- foobar

J'aimerais avoir juste la première ligne.

waaa -foo.pdf

comme résultat final, et j'essaie :

egrep -E "^w" .file | egrep -E "*.pdf"

Existe-t-il un moyen de combiner ces deux recherches ?

5voto

Ravexina Points 50599

Tu dois l'écrire comme ça :

egrep "^w.*\.pdf$" filename
  • Les moyens ont commencé avec w suivi d'un caractère quelconque et terminé par .pdf .

pour un "ou" logique, vous pouvez utiliser -e interrupteur :

egrep -e pattern1 -e pattern2

signifie que toutes les lignes avec pattern1 o pattern2 .

ou comme @steeldriver l'a suggéré, utilisez l'expression rationnelle "ou" :

egrep "(pattern1|pattern2)"

et comme vous le savez, pour les expressions régulières étendues, vous devez utiliser egrep et non grep par exemple

egrep '(bbb|ccc)' # works fine for your file
grep '(bbb|ccc)' # doens't have any result

Pour un "et", vous devez le relier à un autre. egrep :

grep pattern1 | grep pattern2

signifie que toutes les lignes avec les deux pattern1 et pattern2 .

ou utiliser un autre outil comme awk :

awk '/pattern1/ && /pattern2/` filename

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X