テストファイル:
cat Test.txt
#EXTM3U
#EXTINF:100
a.flac
#EXTINF:20
b.flac
予想される結果
cat Test.txt
#EXTM3U
#EXTINF:100
#a.flac
#EXTINF:20
#b.flac
実験1
sed -e '/^#EXTINF/a #' Test.txt
#EXTM3U
#EXTINF:100
#
a.flac
#EXTINF:20
#
b.flac
提案?
#
私の実験では、追加したくない新しい行を追加して追加しました。
答え1
$ sed -e '/^#EXTINF/{n;s/^/#/;}' Test.txt
#EXTM3U
#EXTINF:100
#a.flac
#EXTINF:20
#b.flac
どこ
n
パターンスペース(この場合は一致する行^#EXTINF
)を印刷してから読み込みます。Nパターン空間への入力の外部ラインs/^/#/
S#
新しく読んだ行の先頭で置き換え
答え2
そしてawk
:
awk '{print} /^#EXTINF/ && (getline > 0) {print "#" $0}' file
目的の行を印刷してパターンをテストします。パターンが一致すると、getline
処理する次の行を取得するために呼び出しが行われます。また&& getline
、一致する場合は、最後の行を再印刷しないように、次の行が存在し、まだファイルの終わりに達していないことをテストするために使用されます。
またいいえgetline
:
awk 'p{$0 = "#" $0; p=0} /^#EXTINF/{p=1} {print}' file
パターンが見つかったら、フラグ(p
)を使用して設定します。内部では、p=0
フラグが設定されている次の行でのみフラグを使用できますp{...}
。