一致が見つかるとすぐに現在の入力ファイルの処理を停止することができる ' grep
s-m1
またはawk
's に似たオプションまたはコマンドはありますか (後続の入力ファイルの処理を継続している間)。nextfile
sed
sed
たとえば、
find . -type f -exec sed -ns '/pattern/{<do stuff>; p; <next>}' {} +
<next>
現在の入力ファイルの読み取りを停止するコマンドはどこにありますか? quitコマンド(q
)は終了(後続の入力ファイルの削除)のみを発生するため、適切ではありませんsed
。したがって、入力ファイルのバッチごとに最大1つの一致が見つかります。
答え1
スマート検索と置換の例:
GNU sed
パターンが最初に発生した後、ファイル/入力処理を停止します(のオプションとそのおかげsed
で-s
)find
。+
find . -type f -exec sed -ns '0,/pattern/s/patter/replacement/p' "{}" +
BSD sed
BSDにはオプションがsed
不足しているようです-s
。だから私は使用しています山ディップ提案。
sed
パターンが最初に発生した後に終了すると、次のファイルがfind
実行されます。sed
find . -type f -exec sed -n '0,/pattern/p;s/pattern/replacement/p;q' "{}" \;