7
votes

Comment utiliser awk pour extraire une ligne avec une correspondance exacte

Comment utiliser AWK pour rechercher une correspondance exacte dans un fichier?

awk '$0 ~ /^hello10/{print;}' test.txt


0 commentaires

5 Réponses :


3
votes

Vous pouvez essayer d'utiliser \ <\> pour marquer le bord d'un mot comme \ .


1 commentaires

Je reçois la ligne1: jeton inattendu.



0
votes

Votre expression régulière commence par un carat ^, qui ancre le motif pour commencer au début de la ligne. Essayez de lire la page manuelle pour voir si vous pouvez également trouver un moyen de mettre fin à un motif à la fin de la ligne.


0 commentaires

0
votes

Vous pouvez utiliser la commande sed

sed -n '/ \ bhello10 \ b / p' test.txt

ici \ b indique la limite du mot que vous recherchez.


0 commentaires

10
votes

Pour faire une allure d'expression régulière complète, vous devez ancrer au début et à la fin de la ligne en utilisant ^ et $ : xxx

Mais vous n'utilisez pas réellement aucune fonctionnalité d'expression régulière à côté de l'ancrage que nous venons d'ajouter, ce qui signifie que vous voulez réellement une ancienne comparaison de chaînes: xxx


1 commentaires

Et si mon modèle est stocké dans une variable et passe dans le awk . Par exemple, 1 $ contient le motif et je fais ce qui suit: awk -v p = "$ 1" '$ 0 ~ p {imprimer nr}' myfile . Ensuite, comment puis-je faire une correspondance exacte, laquelle correspond aux lignes avec exactement le motif contenu dans 1 $ ? Merci beaucoup!



0
votes

Il y a aussi la limite de mot / y à Gawk

awk '{si (correspondez ("Hello10", Sprintf ("\ y% s \ y", 0 $)) Imprimer $ 0}' test.txt


0 commentaires