我必须在UNIX框中找到.sql文件,这两个特定的行模式之间有一个空行。
例如:
以下代码没问题。
CREATE VIEW V_NAME_LAST
AS
SELECT COLUMN_NAME FROM TABLE
下面的代码不合适,因为我们有空格黑白AS和SELECT。
CREATE VIEW V_NAME_LAST
AS
SELECT COLUMN_NAME FROM TABLE
你能告诉我一个简单的grep模式搜索来找到这样的文件吗?
另外,提示我们将有空白行的文件很好,我只需要b / w AS SELECT
答案 0 :(得分:0)
^ *$
由于您只对这些文件的名称感兴趣,因此您应该使用grep的-l
选项。
答案 1 :(得分:0)
我会使用一些Perl脚本,如下所示:
perl -0777 -wne '/(\bAS\n\nSELECT\b)/ and print "$ARGV\n"' file1 file2 ...
-0777
打开file mode
,以便读取整个文件并将其视为单个记录。 -w
会针对我的代码所做的任何不良事件发出警告。 -n
在while
循环中包含以下代码。而-e
意味着下一步要执行的程序。
该计划说...... "如果你找到" AS"然后是两个新行,然后单词" SELECT",打印您正在查找的文件的名称" 。
所以,您可以像find
一样使用它:
find ~ -name \*.sql -exec perl -0777 -wne '/(\bAS\n\nSELECT\b)/ and print "$ARGV\n"' {} \;
如果您的find
支持,请将最终的\;
替换为+
,它会更快地运行。