【发布时间】:2020-04-11 17:44:42
【问题描述】:
在我的 /etc/apt/sources.list 中,我想使用 sed 将“contrib non-free”附加到所有非注释行。
这是我的表达:
sed -n -i '/^\([^#].*main\)/{s/main/main contrib non-free/p}' /etc/apt/sources.list
它做了我想要的,但它也删除了所有其他行。
我做错了什么?
【问题讨论】:
-
只需从您的
sed命令中删除-n并删除/p以使其成为sed -i '/^\([^#].*main\)/s/main/& contrib non-free/' /etc/apt/sources.list -
当您想像使用 grep 一样过滤文件时,通常只在 sed 中使用
-n选项。 Sed 在获取下一行之前隐式打印模式空间。替换命令中的p、P和p标志允许用户显式打印全部或部分模式空间。