查找文件中以 g 或 0 到 9 中的任何数字开头的所有行

-2 command-line shell grep shell-script text-processing

如何查找文件中以 g 或 0 到 9 之间的任何数字开头的所有行?

任何人都可以帮助我使用命令行吗?我尝试,如果以 g 开头,我知道该怎么做,但不知道如何处理 g 和 0 到 9。

ale*_*xis 5

这是 grep 与正则表达式的非常简单的使用。这将做到:

grep -E '^[g0-9]' file.txt
Run Code Online (Sandbox Code Playgroud)

我不确定您需要帮助哪一部分,但我建议您阅读 man grep并了解正则表达式。

请注意,您必须使用-E启用“真正的”正则表达式(这是您需要担心的全部内容),并用单引号保护您的正则表达式,以防止 shell 在grep看到它之前用它做自己的事情。(搜索“shell globbing”了解更多详情。)

附注。对于此特定搜索,-E可以将其排除在外而不会产生不良影响。除非您知道它可以被排除在外,否则不要将其排除在外。(我只是提到这一点,因为有些人对这个问题非常感兴趣,你可以在评论中看到。)

  • 没有`-E`也能正常工作 (2认同)
  • 这与`grep` 风格和操作系统无关:我要说的一点是`^[g0-9]` 中的任何内容都不在 BRE 之外,如 [在 POSIX 中定义](http://pubs.opengroup.org /onlinepubs/009696899/basedefs/xbd_chap09.html#tag_09_03) (2认同)
  • 我同意@iruvar。`-E` 是一个不必要的并发症。原始海报没有询问 BRE 与扩展正则表达式,关于问题或答案的任何内容都不需要这些信息。它只是增加了一种开始时并不存在的混乱。您还可以解释如何将 `grep` 与包含模式列表 (`-f`) 的文件一起使用,以防下次有人需要该信息;那会改善答案吗?不,不会。让我们保持答案简单明了;您始终可以在末尾添加“进一步阅读”部分。 (2认同)