gpt4 book ai didi

sed 从特定匹配行中删除一系列行直到特定匹配行(不包括最后一行)

转载 作者:行者123 更新时间:2023-12-04 02:00:17 25 4
gpt4 key购买 nike

我通读了论坛以获取如何解决我的问题的线索,但没有任何相关线程对我有用,编程知识有限,可以应用于我的特定问题。

我的问题是这样的:我需要摆脱在我的文件中聚集的垃圾行,但是在可用行的集群之间。我搜索了 sed 手册和其他有关删除匹配模式范围的信息来源,但他们只提到删除 UNTIL 匹配模式,而不是 TILL。

现在我想指定一个范围,sed 删除从匹配模式行的第一行开始直到匹配另一个模式的行的范围。此外,sed 需要识别存在于行尾的模式。

例如:

line 1
blah blah 1
blah blah 2
blah blah 3
blah blah 4
line 2
line 3

结果必须是:
line 1
blah blah 1
line 2
line 3

请注意 line 和 line 2 之间的多行。虽然 blah blah 1 需要保留,但其他 3 需要删除。

谢谢!

最佳答案

试试这个

sed -n '/line 1/{;p;n;p;};/line 2/,$p'  sedTest1.txt

#output
line 1
blah blah 1
line 2
line 3

Sed 解构:
 sed -n '/line 1/{;p;n;p;};/line 2/,$p'  sedTest1.txt
| | | | |||-> print the range
| | | | ||-> til end of file (the '$' char)
| | | | |-> range operator (i.e. start,end)
| | | |-> beginning of range to watch for and print
| | |-> now print line, get 'n'ext, print that line
| |-> match the line with text 'line 1'
|-> don't print every line, only ones flagged with 'p'

从下往上阅读。

此外,由于您的数据是一个样本,并且您将其称为垃圾行,因此它可能并不那么简单。
您需要阅读 sed 教程以加快速度。

我希望这有帮助。

关于sed 从特定匹配行中删除一系列行直到特定匹配行(不包括最后一行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740248/

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