我有一个包含以下字符串的文件:
||||||
我想用 |""|
替换所有出现的 ||
,所以我使用了
sed 's/||/|\"\"|/g' temp2.csv
但我得到的输出为:
|""||""||""|
而不是 |""|""|""|""|""|
我发现 sed 没有递归地进行替换,我怎样才能使 sed 递归地进行替换,以便仅当上一行没有出现 ||
时才移动到下一行
感谢您的帮助。
最佳答案
最直接的方法是调用 sed 替换两次。但我认为这个 sed 单行可能会更好,因为如果你说,我想递归地将 |||..{n}..|
替换为 |""| ,它就可以工作。 “”|...{n}..|“”|
sed ':a s/||/|""|/g; t a' file
使用您的数据进行测试:
kent$ cat f
||||||
kent$ sed ':a s/||/|""|/g; t a' f
|""|""|""|""|""|
关于bash - 使用 sed 递归替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452973/