Trouvez le numéro de ligne où un mot spécifique apparaît avec “grep”

Est-ce que grep est capable de fournir le numéro de ligne sur lequel le mot spécifié apparaît?

Aussi, est-il possible d’utiliser grep pour rechercher un mot à partir d’une certaine ligne vers le bas?

Utilisez grep -n pour obtenir le numéro de ligne d’une correspondance.

Je ne pense pas qu’il existe un moyen de faire en sorte que grep démarre sur un certain numéro de ligne. Pour cela, utilisez sed. Par exemple, pour commencer à la ligne 10 et imprimer le numéro de ligne et la ligne pour les lignes correspondantes, utilisez:

 sed -n '10,$ { /regex/ { =; p; } }' file 

Pour obtenir uniquement les numéros de ligne, vous pouvez utiliser

 grep -n 'regex' | sed 's/^\([0-9]\+\):.*$/\1/' 

Ou vous pouvez simplement utiliser sed:

 sed -n '/regex/=' file 

En combinant les deux commandes sed, vous obtenez:

 sed -n '10,$ { /regex/= }' file 

Vous pouvez appeler tail +[line number] [file] et le diriger vers grep -n qui indique le numéro de ligne:

 tail +[line number] [file] | grep -n /regex/ 

Le seul problème avec cette méthode est que les numéros de ligne signalés par grep -n seront [line number] - 1 inférieur au numéro de ligne réel dans [file] .

Ou vous pouvez utiliser

  grep -n . file1 |tail -LineNumberToStartWith|grep regEx 

Cela permettra de numéroter les lignes dans le fichier

  grep -n . file1 

Cela imprimera le dernier numéro de ligneToStartWith

  tail -LineNumberToStartWith 

Et enfin, il va grep vos lignes désirées (ce qui inclura le numéro de ligne comme dans le fichier original)

 grep regEX