我想请教一下sed的2个问题。差异sed命令的sed的///“和sed ”S ###“
例如,当我试图把一个字符串sed中包含特殊字符像(。\ n * +)和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中的///“和sed “s ###”
- 如何看待输入只是因为它是纯粹的字符串?
在bash shell和GNU sed中都给出了'hi'作为结果'a =“。\ n *。\ +”; “\ N * \ + adsdfasdf” 输入=;回声“$输入”| sed'/'$ a'/ hi/g'' ....参见https://stackoverflow.com/documentation/sed/1096/substitution#t=201702190808137883167关于使用不同分隔符的一些解释.. – Sundeep
afaik,没有办法告诉sed该字符串被视为文字,你将不得不逃离元字符以及使用的分隔符 – Sundeep