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.

在带有 CygwinWindows 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