如何在 sed 中使用逐字字符串?

如何在 sed 中使用逐字字符串?

例如,

sed 's/string/ /g' where string="a\c:ti]\']x""/\//:`~$%#^&"'

那是如何将字符串按字面意思而不是作为解释的正则表达式模式传递给 sed?

我将在 cygwin 和 ubuntu 上使用它,因此解决方案应该与环境兼容。

答案1

您应该转义特殊字符并使用“/”以外的分隔符。

sed 's#string1#string2#'

答案2

参见此 SOq:

针对以上内容的回答如下:

是您需要的东西,除非您在第一部分而不是第二部分中执行此操作s/first/second/

由于您在 sed 命令中同时使用了'",因此您必须对其中的一些进行转义。尝试这样做 - 创建两个文件:

1.sed

s_"a\\c:ti]\\']x""/\\//:`~\$%#\^&"'_ _g

2.txt

"a\c:ti]\']x""/\//:`~$%#^&"'hello world m"a\c:ti]\']x""/\//:`~$%#^&"'
"a\c:ti]\']x""/\//:`~$%#^&"'this is working"a\c:ti]\']x""/\//:`~$%#^&"'
"a\c:ti]\']x""/\//:`~$%#^&"'as expected"a\c:ti]\']x""/\//:`~$%#^&"'

1.sed是脚本本身,2.txt是测试文件,运行如下进行测试:

$ sed -f 1.sed 2.txt
 hello world m 
 this is working 
 as expected 

$ 

希望这可以帮助。

相关内容