gpt4 book ai didi

regex - 除了与范围结束模式匹配的行之外,如何使用 sed 打印一系列行?

转载 作者:太空狗 更新时间:2023-10-29 11:26:36 25 4
gpt4 key购买 nike

我想知道是否有一种仅 sed 的方法来打印由要匹配的模式决定的一系列行,除了匹配结束模式的最后一行。

考虑以下示例。我有一个文件

line  1
line 2
line 3
ABC line 4
+ line 5
+ line 6
+ line 7
line 8
line 9
line 10
line 11
line 12

我想获取所有以 ABC 开头(包括)和所有以 + 开头的行:

ABC line  4
+ line 5
+ line 6
+ line 7

我试过了

sed -n '/ABC/I,/^[^+]/ p' file

但这给了一行太多:

ABC line  4
+ line 5
+ line 6
+ line 7
line 8

什么是最简单的方法(仅限 sed)将最后一行留在外面?

最佳答案

可能有更好的方法,但我可以想出这个 sed 1 衬垫:

sed -rn '/ABC/,/^[^+]/{/(ABC|^\+)/!d;p;}' file

另一个 sed 1 衬里是

sed -n '/ABC/,/^[^+]/{x;/^$/!p;}' file

还有一个 sed 1 衬里(可能更好)

sed -n '/ABC/I{h;:A;$!n;/^+/{H;$!bA};g;p;}' file

关于regex - 除了与范围结束模式匹配的行之外,如何使用 sed 打印一系列行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com