sedに文字列が表示される前と途中ですべてのテキストを削除する方法

sedに文字列が表示される前と途中ですべてのテキストを削除する方法

これを行う方法を覚えており、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 pjumこれは最初の行でも機能します。そうではありません1,/^jum/

その機能は次のとおりです。

  • sed -n:指示がない限り何も印刷しないでください。
  • 1,/^jum/: 最初の行とインクルードで始まる行の間の行jum:
    • s/^jum//p:行の先頭の「jum」を削除できる場合は、結果を印刷します。
    • d:そして次の行に続く
  • -e p:他のすべての行は印刷できます。

おすすめ記事