#!/usr/bin/sed -f /^|.*|/ {; # 行頭 | のあと1個以上の | がある行なら s,|$,,; # まず行末の | を消しておく s,|\([^|]*\),\1,g; # |... を ... に置換する s,^,,; s,$,,; # 行頭に を、行末に を付加 H; # 置き換え結果をホールドスペースに追加 s/.*//; # パターンスペースは出力されないよう消しておく # ↓最終行なら残ったホールドスペース処理のため :cont へ $ b cont d; # 最終行以外なら次のサイクルへ } :cont x; # 行頭| 以外の行: まずホールドスペースと交換 /./ {; # ホールドスペースに文字列があれば s|^||; s|$|
|; # 先頭に を、末尾に
を追加 p; # ...
全体を出力する s/.*//; # 出力し終わったら消しておく } x