【问题标题】:Search for Pattern with blank line UNIX搜索带空行的模式 UNIX
【发布时间】:2016-02-02 05:57:09
【问题描述】:

我必须在我的 UNIX 机器上找到 .sql 文件,它在两个特定的行模式之间有一个空行。

例如:

下面的代码很好。

CREATE VIEW V_NAME_LAST
AS
SELECT COLUMN_NAME FROM TABLE

下面的代码不好,因为我们有空格 b/w AS 和 SELECT。

CREATE VIEW V_NAME_LAST
AS

SELECT COLUMN_NAME FROM TABLE

您能否告诉我一个简单的 grep 模式搜索来查找此类文件?

另外,提示我们将有空白行的文件,这很好,我只需要 b/w AS SELECT

【问题讨论】:

    标签: shell unix sh


    【解决方案1】:
    ^ *$
    

    由于您只对这些文件的名称感兴趣,因此您应该使用 grep 的 -l 选项。

    【讨论】:

      【解决方案2】:

      我会使用一个小的 Perl 脚本,如下所示:

      perl -0777 -wne '/(\bAS\n\nSELECT\b)/ and print "$ARGV\n"' file1 file2 ...
      

      -0777 开启file mode,因此整个文件被读取并视为单个记录。 -w 会针对我的代码所做的任何坏事发出警告。 -n 将以下代码包装在 while 循环中。而-e表示接下来要执行的程序。

      程序说... “如果你发现单词“AS”后跟两个换行符,然后是单词“SELECT”,打印你正在查看的文件的名称”。 p>

      所以,您可以像这样将它与find 一起使用:

      find ~ -name \*.sql -exec perl -0777 -wne '/(\bAS\n\nSELECT\b)/ and print "$ARGV\n"' {} \;
      

      如果您的find 支持它,请将最后的\; 替换为+,它会运行得更快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-18
        • 1970-01-01
        • 2016-07-26
        • 1970-01-01
        • 1970-01-01
        • 2014-10-15
        • 2017-07-09
        相关资源
        最近更新 更多