[sed]パターンスペースとホールドスペース N、P、DコマンドとH,h,G,g,hコマンド

  • n パターンスペースを出力してから新しく入力
  • N 新しい入力行を読みこんでパターンスペースの後ろにつける

 ^何某\n何某$

  • p
  • P パターンスペースの最初の行だけ(\nまで)出力

 -nオプションとか#nとかと併用して
 N,P,Dの順番で使うのが定石。
 
UNIX\nSystemを UNIX Operation Systemにする例

 /UNIX *$/{
 N
 s/\(\n\)\(System\)/ Operation \2 \1/
 P
 D
 }
  • d パターンスペースの内容をまるごと消去
  • D パターンスペースの最初の行(\nまで)を消去

^$を一つだけ残して残りを消去する例

 /^$/{
 N
 /^\n$/D
 }


パターンスペースには現在の入力行が入る。
ホールドスペースは保管用のバッファ
(ホールドスペースはあくまでも保管用であり、ホールドスペースの
内容を変更するようなコマンドはない)

  • H,h P-spaceからH-spaceにコピー(h),または追加(H)

もともとH-spaceが空の場合にHコマンドが発行されると \n +何某
 となる。

 the [Mm][Aa][Tt][Cc][Hh] statement > the MATCH statementにする例

 /the .* statement/{
 h
 s/.*the \(.*\) statement.*/\1/
 y/abcdef....xyz/ABCDEF....XZY/
 G
  ここどうすんだ?
 }

  • G,g H-spaceからP-spaceにコピー(h),または追加(H)
  • x P-spaceとH-spaceとを交換。