gpt4 book ai didi

Linux Shell - Grep 命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:47 30 4
gpt4 key购买 nike

我在使用带有以下选项的 grep 时遇到问题:\{n\}\{n,\}\{n,m\}。我有一个名为“new”的文件,其中包含以下几行:

aaaa
aaa
aa
a

当我使用 grep 'a\{1\}' new 时,我得到了这个输出:

aaaa
aaa
aa
a

所以,基本上,这个命令会向我显示包含 1 次或多次连续出现的字符“a”的行,对吗?

此外,grep 'a\{1,\} new 会做与 grep 'a\{1\}' new 相同的事情吗?因为两者的输出相同。

最后一个,\{n,m\},我不太明白它的作用。

如果有人能帮助我,我将不胜感激。

最佳答案

来自 man grep:

   Repetition
A regular expression may be followed by one of several repetition
operators:
? The preceding item is optional and matched at most once.
* The preceding item will be matched zero or more times.
+ The preceding item will be matched one or more times.
{n} The preceding item is matched exactly n times.
{n,} The preceding item is matched n or more times.
{n,m} The preceding item is matched at least n times, but not more
than m times.

该示例 grep 'a\{2,3\}' new 也匹配带有 aaaa 的行,因为前三个(或 2 个)a 。该行的其余部分并不重要。

如果您真的希望只匹配 2 或 3 个连续的 a,您可以使用 -o 标志。但请注意,这将从带有 aaaaa 的行中输出 aaaaa。为避免这种情况,您必须使用其他信息,例如示例换行符 ^$

顺便说一句。我建议使用 -E 标志(或相同的 egrep )以便扩展正则表达式支持。那时您不必转义括号。

输入

aaaaa
aaaa
aaa
aa
a

调用 grep -o -E '^a{2,3}$' 将给出输出:

aaa
aa

关于Linux Shell - Grep 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877380/

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