J'ai besoin d'imprimer des lignes dans un fichier correspondant à un motif [~ # ~] ou [~ # ~] un motif différent en utilisant awk ou sed . J'ai l'impression que c'est une tâche facile mais je n'arrive pas à trouver de réponse. Des idées?
La façon POSIX
awk '/pattern1/ || /pattern2/{print}'
Pour être juste, j'aime mieux la manière de lhf via /pattern1|pattern2/
car il nécessite moins de frappe pour le même résultat. Cependant, je dois souligner que ce modèle ne peut pas être utilisé pour les opérations AND logique, pour cela, vous devez utiliser mon modèle qui est /pattern1/ && /pattern2/
Utilisation:
sed -nr '/patt1|patt2/p'
où patt1
et patt2
sont les motifs. Si vous souhaitez qu'ils correspondent à toute la ligne, utilisez:
sed -nr '/^(patt1|patt2)$/p'
Vous pouvez supprimer le -r
et ajoutez des échappements:
sed -n '/^\(patt1\|patt2\)$/p'
pour la conformité POSIX.
awk '/PATT1|PATT2/ { print }'
pourquoi ne voulez-vous pas utiliser grep?
grep -e 'pattern1' -e 'pattern2'