gpt4 book ai didi

linux - Grep Only 返回第一个匹配结果(不需要)。我该如何防止这种情况?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:34 24 4
gpt4 key购买 nike

我有一个文件a.txt,内容如下

>abc
123456789
>def
123456
>ghi
1234
>jkl
12

我只想获取那些具有4-6 个数字字符的行,以及它前面的行。在这种情况下,所需的答案是

>def
123456
>ghi
1234

我知道 grep 会在使用 -B 时在相邻的两行之间插入 '--',但我们暂时忽略它。我试过了

grep -x "[^>].\{4,6\}"a.txt

但这只返回第一个匹配结果,然后停止。那是我只有

>def
123456

作为我的结果。我尝试浏览 man 页面并浏览相关人员,但没有帮助。我在这里缺少什么?

最佳答案

仅打印包含 4 到 6 位数字的整行以及每个匹配项前的一行 (-B1):

grep -B1 -x '[0-9]\{4,6\}' a.txt

例子:

% cat a.txt
>abc
123456789
>def
123456
>ghi
1234
>jkl
12

% grep -B1 -x '[0-9]\{4,6\}' a.txt
>def
123456
>ghi
1234

您使用的表达式 [^>].\{4,6\} 没有按照您的意图进行。 [^>] 匹配一个不是 > 的字符。然后 .\{4,6\} 匹配四到六个任意字符序列。由于一个字符已经与 [^>] 匹配,匹配的条目将有 5 到 7 个字符。所以 123456 匹配但 1234 不匹配。

表达式 [^>].\{3,5\} 也可以按预期工作,但 [0-9]\{4,6\} 表达的意图更清楚。

关于linux - Grep Only 返回第一个匹配结果(不需要)。我该如何防止这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57946339/

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