尽管关于 Stackoverflow 的所有sed-backslash 讨论我都找不到针对我的特定问题的有效解决方案。我想在文件中的某个字符串前面加一个反斜杠:something ->\something
。
sed -i -- 's/\(something\)/\\\1/g' file
这总是返回字符串 \1
而不是 \something
,因为出于某种原因 sed 认为它应该转义第三个反斜杠。可以通过在 sed 命令中的 \\
和 \1
之间插入空格来实现(从我的角度来看更合乎逻辑的)行为,但结果是 \something
(即在结果中插入空格)这不是我想要的。
我在 Windows 上的批处理文件中运行此命令,使用 cygwin
中的 sed
(我希望这无关紧要,因为我的目标是跨平台解决方案).
编辑:/usr/bin/sed 版本 4.2.2。
最佳答案
在带有 Cygwin
的 Windows
cmd 中,使用此 sed
命令:
sed -e 's/\(something\)/\\\\\1/g' file
关于batch-file - sed:如何替换某物。由反斜杠后跟引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41039301/