Comment puis-je utiliser un script bash pour trouver le numéro de ligne où une chaîne se produit?
Par exemple, si un fichier ressemble à ceci,
Hello I am Isaiah
This is a line of text.
This is another line of text.
et j'ai exécuté le script pour rechercher la chaîne "line", il afficherait le numéro 2, car c'est la première fois.
Étant donné que votre exemple affiche uniquement le numéro de ligne de la première occurrence de la chaîne, vous recherchez peut-être:
awk '/line/{ print NR; exit }' input-file
Si vous voulez réellement toutes les occurrences (par exemple, si la sortie souhaitée de votre exemple est en fait "2\n3\n"), omettez le exit
.
J'aime le commentaire de Siddhartha sur le PO. Pourquoi il ne l'a pas posté comme réponse m'échappe.
Je veux généralement juste le numéro de ligne de la première ligne qui montre ce que je recherche.
lineNum="$(grep -n "needle" haystack.txt | head -n 1 | cut -d: -f1)"
Expliqué: après la grep, prenez juste la première ligne ( num: ligne ), cut par les deux points d élimiteur et prenez le premier f ield