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