【发布时间】:2012-05-05 17:08:57
【问题描述】:
我在 sed 命令下运行
sed -i s/abc=.*$/abc=def ghi/g hpq_sf_attach_wf_param.txt
它给了我错误:
sed: -e expression #1, char 17: unterminated `s' command
我注意到这是由于def 和ghi 之间的空格所致。
知道如何解决吗?
【问题讨论】:
我在 sed 命令下运行
sed -i s/abc=.*$/abc=def ghi/g hpq_sf_attach_wf_param.txt
它给了我错误:
sed: -e expression #1, char 17: unterminated `s' command
我注意到这是由于def 和ghi 之间的空格所致。
知道如何解决吗?
【问题讨论】:
您需要使用引号来保护特殊字符,包括空格、$ 和 *。
sed -i 's/abc=.*$/abc=def ghi/g' hpq_sf_attach_wf_param.txt
【讨论】:
hpq_sf_attach_param.txt 的一些示例行?
所以 geekosaur 是对的。您遇到问题的原因是因为通配符需要双引号,因为单引号将它们作为文字字符,而不是您想要的含义。
sed -i "s/abc=.*$/abc=def ghi/g" hpq_sf_attach_wf_param.txt
此外,如果“def”和“ghi”之间的空格给您带来问题,添加“\”应该有助于将其读取为文字空格。
sed -i "s/abc=.*$/abc=def\ ghi/g" hpq_sf_attach_wf_param.txt
【讨论】: