gpt4 book ai didi

regex - 删除两个方向的n行和sed中的匹配?

转载 作者:行者123 更新时间:2023-12-04 14:42:18 25 4
gpt4 key购买 nike

在它起作用之前删除匹配和两行:

sed -i.bak -e '/match/,-2d' someCommonName.txt

在匹配成功后删除两行:

sed -i.bak -e '/match/,+2d' someCommonName.txt

但是删除匹配,它之后的两行和它之前的两行不起作用?

sed -i.bak -e '/match/-2,+2d' someCommonName.txt
sed: -e expression #1 unknown command: `-'

这是为什么呢?

最佳答案

sed 对一系列地址进行操作。这意味着一个或两个表达式,而不是三个。

/match/ 是匹配正则表达式的地址。

-2 是一个地址,它在前面指定了两行

+2 是一个地址,在

之后指定了两行

因此:

/match/,-2 是一个范围,它指定了匹配 match 到前两行的行。

/match/-2,+2d 则包含三个地址,因此没有意义。

要删除模式前后的两行,我会推荐这样的内容(modified from this answer):

sed -n "1N;2N;/\npattern$/{N;N;d};P;N;D"

这会在缓冲区中保留 3 行并读取文件。当模式在最后一行找到时,它会再读取两行并删除所有 5 行。请注意,如果模式在文件的前两行,这将不起作用,但它是一个开始。

关于regex - 删除两个方向的n行和sed中的匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30487216/

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