sed:パターンマッチの最初の項目のみを印刷します。 [重複]

sed:パターンマッチの最初の項目のみを印刷します。 [重複]

同様の質問がいくつかありますが、複数の行でパターンを検索したいときに効率的な解決策が見つかりませんでした。次のような

sed -n '/First string/,/Second string/ p' my.file

印刷するみんなパターンの発生数と一致しますが、最初の発生のみが必要です。私はGNU sedを使用しています。

答え1

qシャットダウンモードに達すると、明示的にシャットダウンするために使用されます。

GNU sedから:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk多分結末パターンを繰り返さない方が簡単です。

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

答え2

これがあなたが望む最初の発生であれば、おそらくawkこれがより適切になりますawk 'NR==1,/original/{sub(/original/, "replacement")} 1' file。からインポートここ

関連情報