Utiliser awk pour faire correspondre des mots entiers


0

En utilisant cette question, j'ai essayé de faire correspondre des mots entiers avec awk.

Dans mon homerdir, il y a un fichier appelé .bashrc, mais quand j'essaie d'utiliser:

ls -la | awk '$9 ~ /\<.bashrc\>/'

Cela ne montre rien.

Aussi essayé:

ls -la | awk '{if($9 ~ "^.bashrc" && $9 ~ "$.bashrc") echo $0}'

Ça ne marche toujours pas.

Qu'est-ce que je fais mal?


1
Quelle est l'attente de production? D'après votre question, je ne vois aucune raison de ne pas simplement utiliser ls .bashrc ou find. -name ".bashrc"
Argonauts Le

En supposant que cela fasse réellement partie d'un problème plus vaste (sinon, je suis tout à fait d'accord avec la suggestion d'Argonauts), cette syntaxe d'expression régulière \< est supportée par GNU awk (utilisez-vous une autre version?). Stupide suggestion peut-être, mais pourriez-vous poster le résultat de ls -la?
Edward

Réponses:


1

~ est utilisé pour la comparaison de chaînes, il ne s'agit pas d'une correspondance exacte.

Vous pourriez utiliser ==. Votre commande devrait être:

ls -la | awk '$9 == ".bashrc"'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.