OS Xで端末を使用してファイル内のテキストを検索し、対応する一致行だけを維持する方法は?

OS Xで端末を使用してファイル内のテキストを検索し、対応する一致行だけを維持する方法は?

私は初めてターミナルとコマンドラインを使用していますが、私が知っているように、grepはファイルから特定のテキスト文字列を検索するのに適したツールのようです。

大容量のテキストファイルを含むフォルダがあるので、各ファイルに特定の文字列(「/foobar」など)を含む行だけを保持したいと思います。例:

文書の内容:

lorem ipsum
trololo /foobar abc
dolor sit
/foobar def

その後は次のようになります。

trololo /foobar abc
/foobar def

コマンドは次のようになります。

grep -wE "(/foobar)" 

しかし、この行を保持し、現在のフォルダにあるすべてのファイルに対してこれを行うようにコマンドに指示する方法がわかりません。

これを行うためにgrepを使用しますかfind?それともgrepに独自の機能がありますか?それは次のとおりです。

find ./* -exec do grep stuff here

答え1

grepファイルのパターンに一致する行のみが見つかり、ファイルは変更されません。sed検索モードを使用してファイルを変更できます。

sed '/\B\/foobar\b/!d' filename

/foobarファイルに一致する行が表示されます。ファイルの変更を現在の場所に保存するには、この-iオプションを使用します。

sed -i '/\B\/foobar\b/!d' filename

また、それを使用することができますfind

find . -type f -exec sed -i'' '/\B\/foobar\b/!d' {} \;

関連情報