Je dois imprimer le numéro de ligne correspondant au mot exact dans un fichier. J'utilise donc la commande grep -w mais j'obtiens plusieurs correspondances.

Par exemple

     grep -nw "\babc\b" /tmp/test.json
 272:{"name": "abc", "imagen": "Application1.png"},
 273:{"name": "abc-bcdgroup-deSSL", "imagen": "Application1.png"},
 274:{"name": "abc-fb-na", "imagen": "Application1.png"},
 275:{"name": "abc-gf3-bmw-comSSL", "imagen": "Application1.png"},

Si je recherche abc, il ne doit imprimer que

272:{"name": "abc", "imagen": "Application1.png"}

Des suggestions à ce sujet?

0
Rajesh 21 avril 2017 à 15:07

3 réponses

Meilleure réponse

Essayez la commande ci-dessous:

grep -nw "\"abc\"" /tmp/test.json
1
William Pursell 21 avril 2017 à 13:07

Avez-vous essayé avec -P?

$ grep -P '(^|\s)\Kabc(?=\s|$)' /tmp/test.json
0
penuts 21 avril 2017 à 12:20

Essayez avec les ancres de début et de fin,

grep -nw "^abc$" /tmp/test.json
0
Abhishek Gurjar 21 avril 2017 à 12:16