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


87

grepを使用してrailsディレクトリを検索しようとしています。特定の単語を探しています。grepでファイル名と行番号を出力したいと思います。

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

例:

  grep -ln "search" *

それをawkにパイプする必要がありますか?


回答:


138

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

grep -Hn "search" *

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

grep -nHo "search" * 

この答えは私にとってもうまくいきました。再帰的に検索する必要があり、次のコマンド例を使用しました:grep -Hnor "localhost"。このリストは、ファイル名と行番号を含むすべての一致を短く簡潔にリストアップします。
Tore Aurstad 2018

これにより、ファイル名と行番号だけでなく、結果も表示されます
elig

30
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

1
これが元の質問に最もよく答えると思います。ファイル名と行番号のみ。
mastaBlasta 2015年

1
`C:\ Users \ me \ git`のようなWindowsの絶対パス名がある場合、すでに1つのコロンが含まれているため、これは機能しないことに注意してください。
hirse 2015年

19

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

grep -niro 'searchstring' <path>

しかし、それは私がいつも他の方法を忘れており、何らかの理由でロバート・デ・grep -ニーロを忘れることができないからです:)


私が上記に賛成するだろうとは思わなかった。ただ楽しいシェア。ありがとう!(しかし、それは実際に機能します-少なくともMacOSでは)
Bas van Ommen 2018年

これを覚えるあなたの方法が大好きです!
グレッグヒルストン

0

@ToreAurstadからのコメントはつづりが可能でgrep -Horn 'search' ./、覚えやすくなっています。

grep -HEroine 'search' ./ 動作する可能性もあります;)

好奇心旺盛な方へ:

$ grep --help | grep -Ee '-(H|E|r|o|i|n|e),'
  -E, --extended-regexp     PATTERNS are extended regular expressions
  -e, --regexp=PATTERNS     use PATTERNS for matching
  -i, --ignore-case         ignore case distinctions
  -n, --line-number         print line number with output lines
  -H, --with-filename       print file name with output lines
  -o, --only-matching       show only nonempty parts of lines that match
  -r, --recursive           like --directories=recurse

0

賛成の回答を使用してツリーを検索し、文字列を含むFortranファイルを見つける方法は次のとおりです。

find . -name "*.f" -exec grep -nHo the_string {} \;

nHoがないと、どこかのファイルが文字列と一致することだけがわかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.