I have a specific word, and I would like to find out what line number in my file that word appears on.
This is happening in a c shell script.
I've been trying to play around with awk to find the line number, but so far I haven't been able to. I want to assign that line number to a variable as well.
Using grep
To look for
word
in file and print the line number, use the-n
option togrep
:This prints both the line number and the line on which it matches.
Using awk
This will print the number of line on which the word
word
appears in the file:This will print both the line number and the line on which
word
appears:You can replace
word
with any regular expression that you like.How it works:
/word/
This selects lines containing
word
.{print NR}
For the selected lines, this prints the line number (NR means Number of the Record). You can change this to print any information that you are interested in. Thus,
{print NR, $0}
would print the line number followed by the line itself,$0
.Assigning the line number to a variable
Use command substitution:
Using shell variables as the pattern
Suppose that the regex that we are looking for is in the shell variable
url
:And:
Use the NR Variable
Given a file containing:
use the built-in NR variable to find the line number. For example:
Sed
You can use the sed command
Explanation
The
-n
suppresses normal output so it doesn't print the actual lines. It first matches the/pattern/
, and then the=
operator means print the line number. Note that this will print all lines that contains the pattern.find the line number for which the first column match RRBS