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 X成功したX場合はラベルに移動s///

関連情報