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

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

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

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

答案1

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

grep -E '^[g0-9]' file.txt

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

请注意,您必须使用-E来启用“真正的”正则表达式(这是您需要担心的全部),并用单引号保护您的正则表达式,以防止 shell 在grep看到它之前对其执行自己的操作。 (搜索“shell globbing”以获取更多详细信息。)

附言。对于这个特定的搜索,-E可以忽略它而不会产生不良影响。不要遗漏它,除非你知道它可以被忽略。 (我只是提到这一点,因为有些人对这个问题非常感兴趣,正如您在评论中看到的那样。)

答案2

像这样的工具使用的正则表达式grep可以理解布尔OR(|):

  • 基本正则表达式

    grep '^g\|^[0-9]' file
    
  • 扩展正则表达式

    grep -E '^(g|[0-9])' file
    
  • Perl 兼容的正则表达式

    grep -P '^(g|\d)' file
    

或者,您可以使用其他工具:

  • sed

    sed -n '/^g/p;/^[0-9]/p' file
    

    或者

    sed -En '/^(g|[0-9])/p' file
    
  • awk

    awk '/^g|[0-9]/' file
    
  • perl

    perl -ne 'print if /^(g|\d)/' file
    

相关内容