当超级用户运行时,Sed的工作方式不同?

时间:2016-02-05 03:22:32

标签: sed sudo

我刚遇到最令人困惑的(对我来说)现象。

我有一个sed one liner

sed 's/^(\*Default.*:) Letter/$1 A4/g' /usr/share/ppd/hplip/HP/HP-*

这正是我想要的并取代“* DefaultPaperDimension:Letter “with”* DefaultPaperDimension:A4“

但是当我跑步时

sudo sed 's/^(\*Default.*:) Letter/$1 A4/g' /usr/share/ppd/hplip/HP/HP-*

没有任何匹配或替换。 “* DefaultPaperDimension:信 “遗骸”* DefaultPaperDimension:Letter“

为什么? 8 - /

1 个答案:

答案 0 :(得分:0)

感谢您的评论。在搜索sed的版本时,我发现我创建了一个别名sed='perl -pe',它是一个用户别名而不是全局别名,不会影响sudo。

因此:

sed 's/^(\*Default.*:) Letter/$1 A4/g' /usr/share/ppd/hplip/HP/HP-*

实际上是

perl -pe 's/^(\*Default.*:) Letter/$1 A4/g' /usr/share/ppd/hplip/HP/HP-*

,而

sudo sed 's/^(\*Default.*:) Letter/$1 A4/g' /usr/share/ppd/hplip/HP/HP-*

是实际的sed,因此它看起来是什么。

再次感谢。