首页 > 解决方案 > 如何使用 egrep 查找包含 N 次或更频繁的字符串的文件

问题描述

我有一个包含大约 400-500 个 SQL 文件的文件夹,并且
只需要那些包含CREATE TABLE3 次或更频繁的字符串的名称。

虽然该命令
$ egrep -rl "(CREATE TABLE)" ./*.sql
当然会打印我所有的文件名,但该命令
$ egrep -rl "(CREATE TABLE.*){3}" ./*.sql
根本不会打印任何文件名......

标志:

标签: bashawkterminal

解决方案


你的命令

egrep -rl "(CREATE TABLE.*){3}" ./*.sql

CREATE TABLE在一行中查找 3 。当它们在不同的行时,你需要做一些不同的事情,而当你有 GNU grep 时,你很幸运:它有选项-z.

# minimal change of your command
egrep -zrl "(CREATE TABLE.*){3}" ./*.sql
# moving option E to the options as suggested by @anubhava
grep -zErl "(CREATE TABLE.*){3}" ./*.sql

推荐阅读