web-dev-qa-db-ja.com

grep出力にファイル名と行番号を表示する

Grepを使用してRailsディレクトリを検索しようとしています。特定のWordを探しています。ファイル名と行番号を出力するにはgrepを使用します。

私のためにこれを行うgrepフラグはありますか?私は-n-lの組み合わせを使用しようとしましたが、これらはファイル名を数字なしで出力するか、簡単に読めない端末に大量のテキストをダンプします。

例:

  grep -ln "search" *

Awkにパイプする必要がありますか?

79
trev9065

-lは、-nの出力を抑制するため、制限が強すぎると思います。 -H--with-filename)をお勧めします:各一致のファイル名を出力します。

grep -Hn "search" *

出力が多すぎる場合は、-oを試して、一致する部分のみを印刷してください。

grep -nHo "search" * 
123
spokeadoke
grep -rin searchstring * | cut -d: -f1-2

これは、再帰的に(この例ではsearchstringという文字列を)検索し、大文字と小文字を無視して、行番号を表示します。そのgrepからの出力は次のようになります。

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

次に、コロン:をフィールド区切り文字として使用し、フィールド1〜2を表示して、その結果をcutコマンドにパイプします。

行番号が不要な場合は、-f1(ファイル名とパスのみ)を使用し、出力をuniqにパイプして、各ファイル名が1回だけ表示されるようにします。

grep -ir searchstring * | cut -d: -f1 | uniq
29
JBW

私は使用するのが好きです:

grep -niro 'searchstring' <path>

しかし、それは、私がいつも他の方法を忘れて、忘れられないからですRobert de grep - niro何らかの理由で:)

12
Peter Versnee