sed + 如果行中有一个单词并且只有另一个单词不在行中,则替换

sed + 如果行中有一个单词并且只有另一个单词不在行中,则替换

我想在以 kernel 字开头的每个结束行上添加字符串 crashkernel=100M

但仅当行不包含“crashkernel=”字样时,它才会添加 crashkernel=100M

我写了下面的内容,但是这个语法没有按预期工作

  sed  "/^#/b;  /kernel/  ;  /crashkernel=/!  s/$/ crashkernel=100M"  /etc/grub.conf

答案1

使用花括号来组合复杂的地址。下面的代码应该可以实现 OP 想要实现的功能(假设 OP 的代替代码是准确的):

sed  '/^#/{/kernel/{/crashkernel=/!  s/$/ crashkernel=100M/}}'  /etc/grub.conf

相关内容