sed:如何替换......通过反斜杠后跟引用

时间:2016-12-08 12:15:52

标签: batch-file sed backslash

尽管在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。

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