尽管在Stackoverflow上进行了所有 sed-backslash 讨论,但我找不到针对我的具体问题的可行解决方案。我希望用反斜杠在文件中的某个字符串前面加something -> \something
。
sed -i -- 's/\(something\)/\\\1/g' file
这总是返回字符串\1
而不是\something
,因为出于某种原因,sed认为它应该逃避第三个反斜杠。通过在sed命令中在\\
和\1
之间插入一个空格,可以实现(从我的角度来看更逻辑)行为,但结果是\ something
(即插入结果中的空间)这不是我想要的。
我在Windows上的批处理文件中运行此命令,使用sed
中的cygwin
(我希望这无关紧要,因为我的目标是跨平台解决方案)。
编辑: / usr / bin / sed版本4.2.2。
答案 0 :(得分:2)
在使用Windows
的{{1}} cmd中,使用此Cygwin
命令:
sed
答案 1 :(得分:1)
您可以从批处理文件
启动脚本<强> myBatch.bat 强>
@echo off
c:\cygwin64\bin\bash ./mySed
<强> mySed 强>
#!/bin/bash
echo asdfsomethingasdf | sed 's/\(something\)/\\\1/g'
当您的路径未完全设置时,可能需要使用/usr/bin/sed