为什么 sed 命令要加引号?

为什么 sed 命令要加引号?

如果我们以 开头 Sed 命令sed并以 为范围sed /X/Y/ FILE,为什么它们通常被用引号标记为sed "s/X/Y/g" FILE

答案1

保护它们免受壳的伤害。并不是说像这样的字符串s/X/Y/需要它,但是当您执行涉及空格或 shell 特殊字符的操作时,无论如何您都需要添加引号。在某种程度上,从一开始就引用更容易,因为无论如何它都没有坏处。

这在没有引号的情况下有效:

$ echo abcdefg | sed s/abc/xyz/ 
xyzdefg

如果没有它们,这会以一些有趣的方式发生:

$ printf 'abc\nabc\n' | sed -E '$s/(abc|def)/xyz zyx/'
abc
xyz zyx

相关内容