これを行う方法を覚えており、Stack Exchangeでも学習しましたが、Googleでどのように検索したのかを忘れていましたが、今は見つかりませんでした。今見つけた答えは私が望む答えではありません。以下はサンプルテキストです。
The quick
brown fox
jumps over
the lazy
dog
sedが「jum」と表示される前と「jum」と表示されたときにすべてを削除したいので、出力は次のようになります。
ps over
the lazy
dog
どうすればいいですか?
ベストアンサー1
sed -ne '1,/^jum/{s/^jum//p;d;}' -e p
@Sundeepがコメントで指摘したように、GNU sedがある場合は使用する方が良いです
sed -ne '0,/^jum/{s/^jum//p;d;}' -e p
。jum
これは最初の行でも機能します。そうではありません1,/^jum/
。
その機能は次のとおりです。
sed -n
:指示がない限り何も印刷しないでください。1,/^jum/
: 最初の行とインクルードで始まる行の間の行jum
:s/^jum//p
:行の先頭の「jum」を削除できる場合は、結果を印刷します。d
:そして次の行に続く
-e p
:他のすべての行は印刷できます。