grep
出力で一致する行の前にファイル名を表示するにはどうすればよいですか?
377539 次
6 に答える
6
この投稿のおかげで、なんとか達成できたこれはどうですか。
複数のファイルを検索したい場合、名前は異なるがパターン (例: filename=logfile.DATE
) を持つログを、パターン (例: ) を持つ複数のディレクトリ内にあるとし/logsapp1, /logsapp2
ます。各ファイルには grep したいパターン (例: "init time"
) があり"init time"
、各ファイルの .
find ./logsapp* -name logfile* | xargs -I{} grep "init time" {} \dev\null | tee outputfilename.txt
次に、次のoutputfilename.txt
ようなものになります
./logsapp1/logfile.22102015: init time: 10ms
./logsapp1/logfile.21102015: init time: 15ms
./logsapp2/logfile.21102015: init time: 17ms
./logsapp2/logfile.22102015: init time: 11ms
一般に
find ./path_pattern/to_files* -name filename_pattern* | xargs -I{} grep "grep_pattern" {} \dev\null | tee outfilename.txt
説明:
find
コマンドは、パターンに基づいてファイル名を検索します
次に、パイプxargs -I{}
はfind
出力を{}
これはの入力になりますgrep ""pattern" {}
grep
次に、ファイル名を表示するためのトリック\dev\null
最後に、出力をファイルに書き込みますtee outputfile.txt
これは、grep
バージョン 9.0.5 ビルド 1989 で機能しました。
于 2015-10-22T16:35:24.667 に答える
-7
grep 'search this' *.txt
すべての.txtファイルを検索するのに役立ちました(もちろん、独自の検索値を入力してください)。
于 2016-03-28T23:57:25.890 に答える