sai
sai

Reputation: 5167

Get line number while using grep

I am using grep recursive to search files for a string, and all the matched files and the lines containing that string are printed on the terminal. But is it possible to get the line numbers of those lines too?

Example: presently, I get /var/www/file.php: $options = "this.target", but I am trying to get /var/www/file.php: 1142 $options = "this.target";, well where 1142 would be the line number containing that string.

The syntax I am using to grep recursively is sudo grep -r 'pattern' '/var/www/file.php'

How do we get results for not equal to a pattern? Like all the files, but not the ones having a certain string.

Upvotes: 474

Views: 538636

Answers (7)

Porsche9II
Porsche9II

Reputation: 661

When working with vim you can place

function grepn() {
    grep -n $@ /dev/null | awk -F $':' '{t = $1; $1 = $2; $2 = t; print; }' OFS=$':' | sed 's/^/vim +/' | sed '/:/s// /' | sed '/:/s// : /'
}

in your .bashrc and then

grepn SEARCHTERM file1 file2 ...

results in

vim +123 file1 : xxxxxxSEARCHTERMxxxxxxxxxx
vim +234 file2 : xxxxxxSEARCHTERMxxxxxxxxxx

Now, you can open vim on the correspondending line (for example line 123) by simply copying vim +123 file1 to your shell.

Upvotes: 0

Cloud Falls
Cloud Falls

Reputation: 429

If you want only the line number do this:

grep -n Pattern file.ext | gawk '{print $1}' FS=":"

Example:

$ grep -n 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023

Upvotes: 32

Miro A.
Miro A.

Reputation: 7963

grep -n SEARCHTERM file1 file2 ...

Upvotes: 711

Fuad Fouad
Fuad Fouad

Reputation: 452

In order to display the results with the line numbers, you might try this

grep -nr "word to search for" /path/to/file/file 

The result should be something like this:

linenumber: other data "word to search for" other data

Upvotes: 2

randomguy
randomguy

Reputation: 387

grep -nr "search string" directory

This gives you the line with the line number.

Upvotes: 2

emilio
emilio

Reputation: 187

grep -A20 -B20 pattern file.txt

Search pattern and show 20 lines after and before pattern

Upvotes: 13

carlodef
carlodef

Reputation: 2472

Line numbers are printed with grep -n:

grep -n pattern file.txt

To get only the line number (without the matching line), one may use cut:

grep -n pattern file.txt | cut -d : -f 1

Lines not containing a pattern are printed with grep -v:

grep -v pattern file.txt

Upvotes: 187

Related Questions