Using Bash Script to Find Line Number of String in

2020-02-17 09:25发布

问题:

How can I use a bash script to find the line number where a string occurs?

For example if a file looked like this,

Hello I am Isaiah
This is a line of text.
This is another line of text.

and I ran the script to look for the string "line" it would output the number 2, as it is the first occurance.

回答1:

Given that your example only prints the line number of the first occurrence of the string, perhaps you are looking for:

awk '/line/{ print NR; exit }' input-file

If you actually want all occurrences (eg, if the desired output of your example is actually "2\n3\n"), omit the exit.



回答2:

I like Siddhartha's comment on the OP. Why he didn't post it as an answer escapes me.

I usually just want the line number of the first line that shows what I'm looking for.

lineNum="$(grep -n "needle" haystack.txt | head -n 1 | cut -d: -f1)"

Explained: after the grep, grab just the first line (num:line), cut by the colon delimiter and grab the first field