我有 200 个文件夹,每个文件夹都有多个 shell 和 sql 文件,我的要求是 grep/查找具有以下所有目录和文件
插入dbname.table_name
选择
我想知道插入到 ${dbname} 中的所有文件(文件的 pwd(是什么。{table_name} 后跟下一行中的选择。Db名称和表名对于所有名称都是相同的
你可以使用grep -r -i -A1 "insert.into" | grep -i -B1 select
-r
将 grep 处理当前目录中的所有文件,并以递归方式处理所有子目录中的文件。
-A1
在匹配的行后面打印一行,
-B1
在匹配行之前打印一行B。
因此,上面的第一个 grep 将打印与insert.into
匹配的所有行加上下一个行;第二个 grep 将仅保留那些在第二行上有select
的行。
(-i
忽略大小写(
然后,您可以追加| grep -i insert.into | cut -d: -f1 | sort -u
以仅获取文件名。
请注意,这做出了一些假设:
- 选项
-A/-B
只在 Linux/gnu 上,而不是像 HPUX 这样的普通 Unix。 - 如果你有同时包含
insert.into
和select
的行,你会得到一些时髦的输出。