如何替换符号 || 用 |""| 使用 sed

Sas*_*Sas 1 bash sed shell-script

我有一个|用作分隔符的文件。一些记录有空单元格||(里面什么都没有)。我试图|""|用以下 sed 命令替换它们:

sed -i 's/\|\|/\|""|/g' file
Run Code Online (Sandbox Code Playgroud)

但结果并不是我所期望的。

输入文件

A|B|C|D|||E
Run Code Online (Sandbox Code Playgroud)

期望的输出:

A|B|C|D|""|""|E
Run Code Online (Sandbox Code Playgroud)

注意记录的开头和结尾没有“|”

任何帮助,将不胜感激。

jim*_*mij 6

只需重复替换,直到输出不变:

$ echo 'A|B|C|D|||E' | sed ':X;s/||/|""|/g;tX'
A|B|C|D|""|""|E
Run Code Online (Sandbox Code Playgroud)

在哪里

  • :X 设置标签 X
  • t XX如果s///成功,则转到标签