再次挣扎。
当匹配某个模式而不是另一个模式时,我想在另一行之后添加一行。
这是我的输入文件:
# abc def hello
# bye hello zzzz
# abc def hello
预期输出是:
# abc def hello
new line
# bye hello zzzz
# abc def hello
new line
我想在以 # 开头、包含单词 hello 但不包含 bye
的文件的任何行之后添加一行我读到了 sed 的一些排除可能性(即
\*<kbd>/pattern/!</kbd> \*
),但到目前为止还没有设法将其添加到命令中。
谢谢!
sed -e '/^#.\*hello.\*/Ia\\'"new line" $input_file
哪里可以包含/再见/!的东西?
哪里可以/再见/!东西包含在其中吗?
从技术上讲,Sed 是一种编程语言。启动一个块并检查内部。
真正的问题是
a
读取整个下一行。所以你必须开始另一件事才能关闭}
。
sed -e '/^#.*hello.*/I{ /bye/!a\'"new line" -e '}' $input_file