首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅在sed替换字符串时运行命令

如何仅在sed替换字符串时运行命令
EN

Unix & Linux用户
提问于 2014-12-23 20:20:58
回答 2查看 2.8K关注 0票数 6

我希望通过命令行在Ubuntu中启用multiverse存储库。

代码语言:javascript
复制
sed -i "/^# deb.*multiverse/ s/^# //" /etc/apt/sources.list && apt-get update

这个命令每次都会运行apt-get update,但是只有当sed将行注释掉时才有必要。

是否有简单的方法来检测sed是否替换字符串并根据结果运行命令?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-12-23 21:12:16

这里最容易做的事情可能是首先对注释行进行grep

代码语言:javascript
复制
grep -q '^# deb.*multiverse' /etc/apt/sources.list &&
  sed -i '/^# deb.*multiverse/ s/^# //' /etc/apt/sources.list &&
  apt-get update
票数 4
EN

Unix & Linux用户

发布于 2014-12-23 21:33:14

代码语言:javascript
复制
{   sed -i '/^# \(deb.*multiv.*\)/h;s//\1/p
        $x;s//apt-get update/w /dev/fd/2' file
}   2>&1 >/dev/null | sh -v

该命令只有在读取apt-get update时执行至少一个替换操作时,才会输出通过管道传递给sh的行file

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/175680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档