我想问两个关于sed的问题。
例如,当我试图将包含特殊字符(如(.\n*.+)的字符串放入sed时,sed无法正常运行。

set a = ".\n*.\+"
set input = ".\n*.\+adsdfasdf"

然后执行:
echo "$input" | sed 's/'$a'/hi/g' # It will give: sed: No match

但是
echo "$input" | sed "s#${a}#hi#g" # It will run but not true

我的问题是:
这些命令之间的区别是什么:sed's//'和sed
“S”
如何将输入视为纯字符串?

最佳答案

1。这些命令之间的区别是什么:sed's//'和sed“s”
---在您的例子中,/#是关键“部分”的分隔符:
在sed中,s命令(如替换命令)可能是最重要的
有很多不同的选择。s命令的语法是
's/regexp/replacement/flags'。

在任何给定的s命令中,/字符可以统一地替换为任何其他单个字符。
2.如何将输入视为纯字符串?
---若要在sed命令中展开/插值变量,这些变量或整个表达式应使用双引号括起来:

set a = ".\n*.\+"
echo "$input" | sed "s/$a/hi/g"

关于linux - 差异sed命令sed's///'和sed“s ###”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42324854/

10-11 22:48
查看更多