使用sed递归替换字符串

Ash*_*aur 2 bash shell recursion sed

我有一个下面的字符串文件:

||||||

我希望|||""|我所使用的每次更换

sed 's/||/|\"\"|/g' temp2.csv

但我得到的输出为:

|""||""||""| 代替 |""|""|""|""|""|

我发现sed没有递归替换,我怎么能让sed以递归方式进行替换,所以只有当前一行没有出现时才转移到下一行 ||

谢谢你的帮助.

Ken*_*ent 5

最直接的方式是将sed替换称为两次.但是我觉得这个sed的一行代码可能会更好,因为它的工作原理,如果你说,我想递归替换|||..{n}..||""|""|...{n}..|""|

sed ':a s/||/|""|/g; t a' file
Run Code Online (Sandbox Code Playgroud)

测试您的数据:

kent$  cat f
||||||

kent$  sed ':a s/||/|""|/g; t a' f
|""|""|""|""|""|
Run Code Online (Sandbox Code Playgroud)