如何查找文件中以 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