sed:如何替换某物。由反斜杠后跟引用
sed: how to replace sth. by a backslash followed by reference
尽管在 Whosebug 上进行了所有 sed-backslash 讨论,但我找不到针对我的特定问题的有效解决方案。我想在文件中的某个字符串前面加一个反斜杠:something -> \something
.
sed -i -- 's/\(something\)/\/g' file
这总是 returns 字符串 </code> 而不是 <code>\something
,因为出于某种原因 sed 认为它应该转义第三个反斜杠。通过在 sed 命令中的 \
和 </code> 之间插入 space 可以实现(从我的角度来看更合乎逻辑的)行为,但结果是 <code>\ something
(即在结果中插入 space)这不是我想要的。
我在 Windows 上的批处理文件中 运行 使用 cygwin
中的 sed
这个命令(我希望这无关紧要,因为我的目标是跨平台解决方案)。
编辑: /usr/bin/sed 版本 4.2.2.
在带有 Cygwin
的 Windows
cmd 中,使用此 sed
命令:
sed -e 's/\(something\)/\\/g' file
您可以从批处理文件启动脚本
myBatch.bat
@echo off
c:\cygwin64\bin\bash ./mySed
mySed
#!/bin/bash
echo asdfsomethingasdf | sed 's/\(something\)/\/g'
当您的路径未完全设置时,可能需要使用 /usr/bin/sed
尽管在 Whosebug 上进行了所有 sed-backslash 讨论,但我找不到针对我的特定问题的有效解决方案。我想在文件中的某个字符串前面加一个反斜杠:something -> \something
.
sed -i -- 's/\(something\)/\/g' file
这总是 returns 字符串 </code> 而不是 <code>\something
,因为出于某种原因 sed 认为它应该转义第三个反斜杠。通过在 sed 命令中的 \
和 </code> 之间插入 space 可以实现(从我的角度来看更合乎逻辑的)行为,但结果是 <code>\ something
(即在结果中插入 space)这不是我想要的。
我在 Windows 上的批处理文件中 运行 使用 cygwin
中的 sed
这个命令(我希望这无关紧要,因为我的目标是跨平台解决方案)。
编辑: /usr/bin/sed 版本 4.2.2.
在带有 Cygwin
的 Windows
cmd 中,使用此 sed
命令:
sed -e 's/\(something\)/\\/g' file
您可以从批处理文件启动脚本
myBatch.bat
@echo off
c:\cygwin64\bin\bash ./mySed
mySed
#!/bin/bash
echo asdfsomethingasdf | sed 's/\(something\)/\/g'
当您的路径未完全设置时,可能需要使用 /usr/bin/sed