6

こんにちは、Linux でファイル内のテキストを検索するためにこのコマンドを使用しています。

find ./ -type f -exec grep -l "Text To Find" {} \;

コマンドは正常に動作しますが、テキストを含む行を自動的に印刷したいと思います。可能であれば、テキストの上の最初の 2 行とテキストの後ろの 2 行を印刷したいと思います。

また、検索を使用する代わりに、テキストを検索して行を印刷する別の提案も歓迎します。

よろしくお願いします。

4

5 に答える 5

16
find ./ -type f -exec grep -Hn "Text To Find" {} \;

-A および -B フラグを使用して、一致の前後の行を出力します。

find ./ -type f -exec grep -Hn -A1 -B1 "Text To Find" {} \;

また、grepを使用することもできます:

grep -R -Hn -A1 -B1 "Text To Find" *
于 2009-02-20T23:04:38.013 に答える
4

grepだけではないのはなぜですか?

grep -r -C2 "Text To Find" *
于 2009-02-20T23:04:50.447 に答える
3

findより高速な検索のために、次の代替構文を使用できます。

find . -type f -print0 | xargs -0 grep -Hn -C2 "Text To Find"

grepすべてのファイルを呼び出す代わりに(これが実行することです-exec ... {})、一連のファイルを呼び出しgrepます。

-print0-0およびオプションは移植性がないことに注意してください( 、およびプログラム-C2の GNU バリアント、つまり、ほとんどの Linux、BSD などのインストール、および Cygwin や MinGW では正常に動作しますが、「古い」Solaris では動作するとは思わないでください。 HPUXなどがインストールされます。)findxargsgrep

于 2009-02-20T23:15:29.733 に答える