sedを使用して||記号を|""|に置き換える方法

sedを使用して||記号を|""|に置き換える方法

|区切り文字として使用するファイルがあります。一部のレコードには空のセルがあります||(何もありません)。私は|""|それを次のsedコマンドに置き換えようとしました。

sed -i 's/\|\|/\|""|/g' file

しかし、結果は私が期待したものとは異なりました。

入力ファイル

A|B|C|D|||E

希望の出力:

A|B|C|D|""|""|E

レコードの先頭と末尾に「|」はありません。

どんな助けでも大変感謝します。

答え1

出力が変わらないまで置換を繰り返します。

$ echo 'A|B|C|D|||E' | sed ':X;s/||/|""|/g;tX'
A|B|C|D|""|""|E

どこ

  • :Xラベル設定X
  • t XX成功するとs///ラベルに移動

関連情報