bash - 如何使用 egrep 查找包含 N 次或更频繁的字符串的文件
问题描述
我有一个包含大约 400-500 个 SQL 文件的文件夹,并且
只需要那些包含CREATE TABLE
3 次或更频繁的字符串的名称。
虽然该命令
$ egrep -rl "(CREATE TABLE)" ./*.sql
当然会打印我所有的文件名,但该命令
$ egrep -rl "(CREATE TABLE.*){3}" ./*.sql
根本不会打印任何文件名......
标志:
-R
– 递归-L
– 匹配文件 | 仅打印包含匹配项的文件名
解决方案
你的命令
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
推荐阅读
- reactjs - 使用没有语法错误的第三方 React 库时出现 Unexpected Token 语法错误
- office365 - Office 365 在 ARCHIVE ROOT 上调用 EWS findFolders 时抛出奇怪的错误
- php - PHP org.json.JSONException 的 Android 问题:在字符 0 处输入结束
- ios - 检测键盘何时以交互方式关闭
- ios - 解析 JSON 错误“预期解码数组
但找到了一个号码 - xamarin.forms - Xamarin Forms 4.5:使用 Forms9Patch 将 pdf 转换为字节数组以创建 pdf,然后使用字节数组打印到蓝牙打印机
- javascript - 尝试自定义 Facebook 分享按钮时出错
- php - Woocommerce:将基于密钥的类添加到“wc_display_item_meta”中的 LI
- c++ - Centos7 g++“to_string不在std的成员中”
- entity-framework - 如何在 EF6 中表示和过滤相关数据模型