![sed:パターンマッチの最初の項目のみを印刷します。 [重複]](https://linux33.com/image/110898/sed%EF%BC%9A%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%83%9E%E3%83%83%E3%83%81%E3%81%AE%E6%9C%80%E5%88%9D%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AE%E3%81%BF%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%5B%E9%87%8D%E8%A4%87%5D.png)
同様の質問がいくつかありますが、複数の行でパターンを検索したいときに効率的な解決策が見つかりませんでした。次のような
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
。からインポートここ。