[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とを交換。