我想问两个关于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/