gpt4 book ai didi

linux - 我如何在 Unix 中使用基本的 grep 命令?

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

我需要使用 grep 命令显示所有包含 2-6 个“x”的行

还需要知道如何显示所有带有 3 个连续 'x' 的行

我已经尝试过 grep x{2,6} example.txt 但我总是收到一个错误,指出在目录中找不到 x6。我的示例文件包含 7 行,每行中“x”的数量增加一个。

最佳答案

Bash shell 使用 Brace Expansion展开:

grep x{2,6} example.txt

进入:

grep x2 x6 example.txt

除非您的目录中有一个名为 x6 的文件,否则 grep 会提示您无法打开它。

  • 规则 1:将 grep 的正则表达式括在引号内——尽可能使用单引号。

因此,使用:

grep 'x{2,6}' example.txt

这处理获取一个正则表达式到grep。现在我们需要考虑这意味着什么。默认情况下,这意味着查找字符 x{26, } 在一行上。添加 -E 选项使用扩展的正则表达式,该命令在文件的一行中查找 2 到 6 个连续的 x:

grep -E 'x{2,6}' example.txt

但是,可能值得注意的是,这与选择 'xx' 几乎相同,除非您启用了着色,或者选择“仅”匹配的文本(GNU grep 扩展 -o 选项)。

这些都是针对 2-6 个相邻的 x,这大致是您提议的正则表达式想要的。

你问三个相邻的 x:

grep 'xxx' example.txt

单引号不是 100% 必要的,但它们没有害处并提醒您通常将它们用于正则表达式。

现在我们面临这样的困境,您的意思可能是“在一条线上有 2 到 6 个 x,不一定相邻,也不是 0 或 1,也不是 7 或更多”。

  • 规则 2:准确描述您需要的结果

不精确的要求会导致不正确或意外的结果。满足该要求需要更复杂的正则表达式:

grep -E '^([^x]*x){2,6}[^x]*$' example.txt

这会查找 2-6 次出现的零个或多个非 x,后跟行首的 x,然后是零个或多个非 x,直到行尾。

关于linux - 我如何在 Unix 中使用基本的 grep 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207344/

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