109 votes

Comment grep la correspondance exacte

Je les ai :

$ cat a.tmp
ABB.log
ABB.log.122
ABB.log.123

Je voulais trouver une correspondance exacte de ABB.log.

Mais quand j'ai fait

$ grep -w ABB.log a.tmp
ABB.log
ABB.log.122
ABB.log.123

il les montre tous.

Je peux obtenir ce que je voulais en utilisant grep ?

173voto

John Kugelman Points 108754
grep -Fx ABB.log a.tmp

De la page de manuel grep :

-F, --fixed-strings
Interpréter PATTERN comme une (liste de) chaîne fixe.
-x, --line-regexp
Sélectionnez uniquement les correspondances qui correspondent exactement à la ligne entière.

111voto

user562374 Points 2196

Il suffit de spécifier les ancrages.

grep '^AAA\.log$' a.tmp

23voto

PranavKN Points 131

Voici ce que je fais, bien que l'utilisation d'ancres soit la meilleure solution :

grep -w "ABB.log " a.tmp

3voto

Scrutinizer Points 3311

La plupart des suggestions échoueront s'il y a ne serait-ce qu'un seul espace avant ou arrière, ce qui est important si le fichier est édité à la main. Cela le rendrait moins vulnérable dans ce cas :

grep '^[[:blank:]]*ABB\.log[[:blank:]]*$' a.tmp

Une simple boucle while-read en shell le ferait implicitement :

while read file
do 
  case $file in
    (ABB.log) printf "%s\n" "$file"
  esac
done < a.tmp

2voto

ghostdog74 Points 86060

De la même manière avec awk

 awk '/^ABB\.log$/' file

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X