sed を使用して、最初の項目を除くすべての項目をコメントアウトします。

sed を使用して、最初の項目を除くすべての項目をコメントアウトします。

最初のイベント以外のすべてのイベントをコメントアウトしてみました。

オリジナルサンプル.txt

一つ
二つ
サム
二つ
二つ
#二人

サンプル.txt

一つ
二つ
サム
#二人
##両方
#二人

私は何が起こるのかについてのみ説明できます。使用:

sed -i /two/s/^/#/

ただし、これはすでにコメントアウトされているイベントもコメントアウトします。また、イベントが見つかった行をコメントとして扱います。この問題をどのように解決できますか? Ubuntuの基本イメージでこれをテストしているので、特に何もインストールできません。

ベストアンサー1

少なくともGNU sed(Ubuntuにはデフォルトである必要があります)を使用すると、0,/pattern/次のことができます。

$ sed '0,/^two/!s//#&/' original.txt 
one
two
three
#two
#two
#two

これは、「0行と最初の一致の間の0行を除くすべての行に対してに置き換え、ちょうど一致した/^two/内容に従います。置換の空のパターンは、以前の正規表現と一致し、一致したものを置き換えます。非/^two/ゴルフバージョン〜する#//&

sed '0,/^two/!s/^two/#two/' original.txt

^two行の先頭に固定されているため、注釈付きイベントと一致しません。いいえ何が欲しいですか?削除してください^

おすすめ記事