私は使用してキーワードの出現をなんとかしました
grep "KeyWord" . -r -n -i -I
ただし、KeyWordの出現回数が多すぎます。そのWordを含むすべての行を削除したいだけです。
探し回ったところ、sedはユーティリティのようです。誰が私にどのコマンドがトリックをするのか教えてもらえますか?
ありがとう。
GNU sed:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
OSX sedの場合:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
最初のコマンドfind
は、すべての標準ファイル(ディレクトリやパイプなどではない)を検索し、\0
で区切って出力します(したがって、ファイル名にはスペースや改行などを含めることができます)。
2番目のコマンドxargs
はfind
の出力を読み取り、区切り記号(\0
のために-0
)に基づいてリストを取得し、パラメーターを追加してsed -i [...]
を呼び出します。リストから(ファイルの数が多い場合、パラメーターの最大長は呼び出しごとに制限されるため、sed
は複数回呼び出されます)。
sed
コマンドは、インプレース(-i
)を変更します。
/KeyWord/d
については、正規表現KeyWord
を含む行が削除されます。
(単純だが珍しい)構文を正しく理解するためにsed
を学び、関連するツールの詳細については、該当するマンページを参照してください。
そして、私がzsh
を宣伝したいので、拡張グロブを使用したソリューション:
sed -i /KeyWord/d **/*(.)
VimはExモードで使用できます。
find -type f -exec ex -sc g/KeyWord/d -cx {} ';'
g
グローバル検索
d
削除
x
保存して閉じる