Pourquoi “grep” se comporte différemment dans cet exemple?

J’essaie de créer une ligne à partir d’un fichier qui commence par “Residue XXX”. Cela fonctionne quand je n’ai que ‘Résidu’ mais ne fonctionne pas si j’ai ‘Résidu XXX’ Des raisons pour ce comportement?

Ici, il fonctionne:

grep '^Residue' log.txt Residue XXX highDenisity 

et ne fonctionne pas:

 grep '^Residue XXX' log.txt 

Tenez la main si vous pensez qu’il ya un caractère de tabulation entre Residue et XXX .

Utilisez à la place une expression régulière agnostique des blancs.

 grep '^Residue\s*XXX' log.txt 

Cette expression régulière couvre plusieurs tabs ou un onglet et un espace entre les mots.

Ou vous pouvez simplement faire une logique and avec awk comme ceci:

 awk '/^Residue/ && /XXX/' file 

Cela ne produira que des lignes commençant par Residue et contenant également XXX

Vous pouvez également faire le and comme ceci:

 awk '/^Residue.*XXX/' file