sed:次の入力ファイルにジャンプ

sed:次の入力ファイルにジャンプ

一致が見つかるとすぐに現在の入力ファイルの処理を停止することができる ' greps-m1またはawk's に似たオプションまたはコマンドはありますか (後続の入力ファイルの処理を継続している間)。nextfilesedsed

たとえば、

find . -type f -exec sed -ns '/pattern/{<do stuff>; p; <next>}' {} +

<next>現在の入力ファイルの読み取りを停止するコマンドはどこにありますか? quitコマンド(q)は終了(後続の入力ファイルの削除)のみを発生するため、適切ではありませんsed。したがって、入力ファイルのバッチごとに最大1つの一致が見つかります。

ベストアンサー1

スマート検索と置換の例:

GNU sed

パターンが最初に発生した後、ファイル/入力処理を停止します(のオプションとそのおかげsed-sfind+

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' "{}" \;

おすすめ記事