【问题标题】:sed error: unterminated 's' commandsed 错误:未终止的“s”命令
【发布时间】: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

我注意到这是由于defghi 之间的空格所致。 知道如何解决吗?

【问题讨论】:

标签: unix sed


【解决方案1】:

您需要使用引号来保护特殊字符,包括空格、$*

sed -i 's/abc=.*$/abc=def ghi/g' hpq_sf_attach_wf_param.txt

【讨论】:

  • 嗨,添加单引号导致更新失败,目标文件 hpq_sf_attach_wf_param.txt 内没有任何变化〜虽然它应该已经更新
  • 你确定你的模式是正确的吗?也许编辑您的问题以包含来自hpq_sf_attach_param.txt 的一些示例行?
【解决方案2】:

所以 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 2019-05-04
    • 2011-05-03
    • 2015-09-25
    • 2013-06-11
    • 2012-07-10
    • 2013-11-27
    • 2018-05-29
    相关资源
    最近更新 更多