Comment grep mot exact avec seulement l'espace comme séparateur de mots

Par exemple: j'ai un file comme suit:

AA ABC-AA-AA AAA ABC-AA ABC.AA ABC AA ABC.A AA 

Si j'utilise grep -w "ABC" file1 , grep -w "ABC" file1 toutes les lignes.

Mais je devrais seulement get la 3ème ligne: ABC.AA ABC

C'est prendre . et - comme séparateurs de mots. Mais j'ai seulement besoin d'espace en tant que séparateur de mots.

De (GNU) grep(1) page man:

-w, –word-regexp

Sélectionnez uniquement les lignes contenant des correspondances qui forment des mots entiers. Le test est que la sous-string correspondante doit être soit au début de la ligne, soit précédée d'un caractère constitutif non-mot. De même, il doit être soit à la fin de la ligne, soit suivi d'un caractère non verbal. Les caractères constitutifs des mots sont les lettres, les numbers et le trait de soulignement .

Vous devrez donc requestr explicitement aux espaces (ou aux débuts de ligne et / ou aux extrémités) d'être présents:

 grep -E '(^| )ABC( |$)' file1 

Si vous souhaitez également inclure d'autres espaces blancs, remplacez les espaces ci-dessus par un espace plus grand, par exemple [[:space:]] (voir à nouveau la page man de grep(1) ).