如何获取匹配单词之后的所有行,直到下一个不同的匹配单词?
例如,我的输入如下所示。
1
2
3
5
6
Run Code Online (Sandbox Code Playgroud)
我需要sed
从1到5,在我的输出中我需要包括1但我不想包括 *5* 和其余的行。
如果我的文件不包含5,我需要将剩余的行保留到最后。
注意:我看到引用的链接看起来与我的问题重复,标题为:仅显示 2 个匹配模式之间的文本,但它没有回答我的问题。如果第二个匹配项不在文件中,那里的答案不包括处理方法。
sed '/1/,/5/!d;/5/d'
Run Code Online (Sandbox Code Playgroud)
将返回从包含的行开始1
到包含5
(不包括该行)之后的下一行的行。如果5
在一个包含之后没有包含的行1
,它将从包含的第一行打印1
到文件的末尾。
请注意,它将打印所有相应的部分。
如果只有一个部分,或者您只对第一个部分感兴趣,另一种方法可能是:
sed -n '/1/,$!d; /5/q; p'
Run Code Online (Sandbox Code Playgroud)
这意味着sed
在同一行找到 5 后或在包含1
.