我有200个文件夹,每个文件夹有多个shell和sql文件,我的要求是grep / find所有具有以下内容的目录和文件
插入dbname.table_name
选择
我想知道插入到$ {dbname}。{table_name}中的所有文件(文件的pwd)是什么,然后是下一行中的select。所有人的数据库名称和表名称相同
答案 0 :(得分:1)
您可以使用grep -r -i -A1 "insert.into" | grep -i -B1 select
-r
将对当前目录中的所有文件进行grep,并在所有子目录中对其进行递归。
-A1
在匹配的行后 A 打印一行,
-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
的行,则会得到一些时髦的输出。