Comment utiliser AWK pour rechercher une correspondance exacte dans un fichier?
awk '$0 ~ /^hello10/{print;}' test.txt
5 Réponses :
Vous pouvez essayer d'utiliser \ <\> pour marquer le bord d'un mot comme \
Je reçois la ligne1: jeton inattendu.
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. P>
Vous pouvez utiliser la commande sed p>
ici \ b indique la limite du mot que vous recherchez. p> sed -n '/ \ bhello10 \ b / p' test.txt code> p>
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 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: p> ^ code> et
$ code>:
Et si mon modèle est stocké dans une variable et passe dans le awk code>. Par exemple,
1 $ code> contient le motif et je fais ce qui suit:
awk -v p = "$ 1" '$ 0 ~ p {imprimer nr}' myfile code>. Ensuite, comment puis-je faire une correspondance exacte, laquelle correspond aux lignes avec exactement le motif contenu dans
1 $ code>? Merci beaucoup!
Il y a aussi la limite de mot / y à Gawk p>
awk '{si (correspondez ("Hello10", Sprintf ("\ y% s \ y", 0 $)) Imprimer $ 0}' test.txt code> p> p> P>