web-dev-qa-db-ja.com

grepを使用しながら行番号を取得する

ファイルを検索して文字列を検索するのにgrep recursiveを使用しています。一致したすべてのファイルとその文字列を含む行が端末に表示されます。しかし、それらの行の行番号も取得することは可能ですか。

例:現在私が取得しているのは/var/www/file.php: $options = "this.target"ですが、取得しようとしているのは/var/www/file.php: 1142 $options = "this.target";です。1142はその文字列を含む行番号です。

再帰的にgrepするために私が使っている構文はSudo grep -r 'pattern' '/var/www/file.php'です。

もう1つの問題は、パターンと等しくない場合にどのように結果が得られるのかということです。特定の文字列を持つものではなく、すべてのファイルが好きですか。

315
sai
grep -nr SEARCHTERM file1 file2 ...
491
Miro A.

行番号はgrep -nで印刷されています。

grep -n pattern file.txt

行番号だけを(一致する行を除いて)取得するには、cutを使用します。

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

パターンを含む行ではないgrep -vで印刷されます。

grep -v pattern file.txt
134
carlito

行番号だけが欲しいならこれをしてください:

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

例:

$ grep -nr 9780545460262 EXT20130410.txt | gawk '{print $1}' FS=":" 
48793
52285
54023
23
Cloud Falls
grep -A20 -B20 pattern file.txt

パターンを検索し、パターンの前後に20行表示する

6
emilio

結果を行番号と共に表示するためには、これを試してみるかもしれません

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

結果は次のようになります。

linenumber: data data data Word to search for data data
0
Fouad Djebbar

grep -nr "検索文字列"ディレクトリ

これにより、行番号付きの行が得られます。

0
randomguy