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?
Utilisation grep -n
pour obtenir le numéro de ligne d'une correspondance.
Je ne pense pas qu'il y ait un moyen de faire en sorte que grep commence par 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
Tu peux appeler tail +[line number] [file]
et le diriger vers grep -n
qui indique le numéro de la ligne:
tail +[line number] [file] | grep -n /regex/
Le seul problème avec cette méthode concerne les numéros de ligne signalés par grep -n
sera [line number] - 1
moins que le numéro de ligne actuel dans [file]
.
Ou vous pouvez utiliser
grep -n . file1 |tail -LineNumberToStartWith|grep regEx
Cela se chargera de numéroter les lignes du fichier
grep -n . file1
Ceci imprimera le dernier numéro de ligne au début
tail -LineNumberToStartWith
Et enfin, les lignes désirées seront grpées (ce qui inclura le numéro de ligne comme dans le fichier original)
grep regEX