假设我们在 CSV 中有一行,如下所示:
|Foo|,,,,,,,,|Bar|,,,,,
|
封装器在哪里,,
分隔符在哪里(如您所料)。
但是假设您有一些代码需要填充这些空字段,而您希望将此行转换为如下内容:
|Foo|,||,||,||,||,||,||,||,|Bar|,||,||,||,||,
(我们可以稍后处理尾随逗号)我尝试在这个 CSV 上使用这个 sed 命令来获得所需的结果:
sed 's/,,/,||,/g'
然而,正则表达式模式,,
不是零宽度,所以当它扫描线时,它会移动两个,即使我们只处理了一个字段。结果是这样的:
|Foo|,||,,||,,||,,||,|Bar|,||,,||,,
问题是当我们在替换中走到这一步时:
|Foo|,||,,,,,,,|Bar|,,,,,
我们已经“||
处理”了,||,
.
如何使用 sed 进行这种替换?