我的任务是替换\\\\\\\\server\\\path1\\\\path2\\\\ with \\\\server\\path1\\path2\\
in的多个条目myfile.txt
(删除多余的反斜杠)。
我尝试过使用 sed 来实现此目的,但没有找到任何可以替换的内容:
sed 's:\\\\server\\path1\\path2\\:\\server\path1\path2\:g' myfile.txt
我也尝试转义反斜杠,但也没有找到任何可以替换的内容:
sed 's:\\\\\\\\server\\\\path1\\\\path2\\\\:\\\\server\\path1\\path2\\:g' myfile.txt
这可能是一个蹩脚的问题,但我真的很困惑。我尝试到处寻找一种通过命令来执行此操作的方法,但我尝试的任何方法都不起作用。
答案1
您可以使用
sed -e 's,\\\\,\\,g' -e 's/^\\\([^\\]\)/\\\\\1/'
(第二部分确保\something
变成\\something
......您可能想要,也可能不想要,具体取决于您的用例)
那样:
\\something\already\ok stays ok (thanks to the 2nd part)
\\\\something\\like\\this becomes \\something\like\this
如果省略第二部分,
\\something\like\that becomes \something\like\that , which is wrong