複数行パターン空間を持つsedの^および$正規表現アンカーのPOSIX動作

複数行パターン空間を持つsedの^および$正規表現アンカーのPOSIX動作

sed ^$たとえば、次を使用するときにパターンスペースに改行文字が含まれている場合窒素注文する?

それでもパターン空間の始まりと終わりと一致する必要がありますか、または複数行を含む行の始まりと終わりと一致する必要がありますか?

GNUsed^合計は、$まだパターン領域の始まりと終わりにのみ一致します。

答え1

^$そして着替える常に開始と終了が一致します。ワイヤー、説明したようにここ

どんなsed用途でも着替える同じことをします。コマンドを使用Nすると、sed複数の行がパターン空間内の1つの長い行として扱われ、各行は本物\n埋め込み改行(リテラルと)で\区切られた行n

確認する:

printf '1\n2\n' | sed '1N;/2$/d'

何も出力されません。そして:

printf '1\n2\n' | sed '1N;/1$/d'

あなたのため:

1
2

または、lより詳細な情報を取得するには、ook コマンドを使用します。

$ printf '1\n2\n' | sed 1N\;l
1\n2$
1
2

$ printf '1\n2\n' | sed 1N\;l | od -t a
0000000   1   \   n   2   $  nl   1  nl   2  nl
0000012

関連情報