【问题标题】:How can I avoid "no input files" error from sed, when run from xargs?从 xargs 运行时,如何避免 sed 出现“无输入文件”错误?
【发布时间】:2016-05-27 16:22:50
【问题描述】:

我有这个 shell 脚本来更新我的配置文件中的 IP 地址(任何匹配 $old_address_pattern 的都必须更改为 $new_address):

grep -rl "$old_address_pattern" /etc \
  | xargs sed -i "s/$old_address_pattern/$new_address/g"

如果grep 命令没有找到匹配的文件,那么sed 将报错“没有输入文件”。当文件列表为空时,如何使此管道成功?

【问题讨论】:

    标签: ubuntu sed xargs


    【解决方案1】:

    如果你想避免在grep 没有输出时运行sed,那么(因为你已经用 Ubuntu 标记了它),你可以给 -r --no-run-if-emptyxargs 的参数:

    --no-run-if-empty
    -r
    如果标准输入不包含任何非空格,请不要运行该命令。通常,即使没有输入,该命令也会运行一次。此选项是 GNU 扩展。

    所以你的命令应该是这样的:

    grep -rl "$old" /etc | xargs -r sed -i "s/$old/$new/g"
    

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多