执行Sed命令

时间:2012-03-01 12:43:40

标签: linux sed

当我运行命令

sed -e "s/$1/@root@The-Three-Little-Pigs-Siri-Proxy/" -i gen_certs.sh

我收到以下错误消息。我试图在同一个文件中用下面的另一个替换文本$ 1,而不是创建一个只修改当前文件的文本。

sed: -e expression #1, char 0: no previous regular expression

任何想法可能导致错误以及如何修复它?

操作系统:Ubuntu 10.10 32位

2 个答案:

答案 0 :(得分:2)

$1如果是双引号字符串,则会扩展为空字符串('')。 您可以使用单引号来保留$1的字面值:

sed -e 's/$1/@root@The-Three-Little-Pigs-Siri-Proxy/' -i gen_certs.sh

答案 1 :(得分:1)

您需要转义模式:sed -e "s/\$1/@root@The-Three-Little-Pigs-Siri-Proxy/" -i gen_certs.sh,因为$1表示sed中的后向引用(假设您要替换输入中的字符串$1,对吗?)