当使用 sed 匹配某个字符串而不是另一个字符串时,Sed 行

问题描述 投票:0回答:1

再次挣扎。

当匹配某个模式而不是另一个模式时,我想在另一行之后添加一行。

这是我的输入文件:

# 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

哪里可以包含/再见/!的东西?

linux sed
1个回答
0
投票

哪里可以/再见/!东西包含在其中吗?

从技术上讲,Sed 是一种编程语言。启动一个块并检查内部。

真正的问题是

a
读取整个下一行。所以你必须开始另一件事才能关闭
}

sed -e '/^#.*hello.*/I{ /bye/!a\'"new line" -e '}' $input_file
© www.soinside.com 2019 - 2024. All rights reserved.