我想在文件中的特定单词后添加一些单词。
示例:
flags:ia
minfree:5
naflags:ia
我想在"标志之后添加,lo,ad,fd,fm,-all:ia"我使用了以下see命令:
sudo sed -i.bak "s/flags:ia[^)]*/&,lo,ad,fd,fm,-all/" /etc/security/audit_control
然而我的输出结束了;
flags:ia,lo,ad,fd,fm,-all
minfree:5
naflags:ia,lo,ad,fd,fm,-all
我怎样才能使它只影响"标志:"而不是" naflags:" ?
答案 0 :(得分:1)
您需要使用\0
代替&
来解决替换模式中的当前匹配问题:
sudo sed -i.bak 's/^flags:ia[^)]*/\0,lo,ad,fd,fm,-all/' /etc/security/audit_control
我不确定您使用[^)]*
的原因。这可能取决于您的实际输入数据。只知道你在问题中显示的输入我会预期[^[:space:]]*
,或者不是那样。
对于OSX
个用户。事实证明,上述命令不适用于OSX
(我无法测试此问题,因为我使用Linux
)。但是,我们可以在下面的评论中找到以下命令:
sed '/^flags:ia[^)]*/s/$/,lo,ad,fd,fm,-all/' input.file