【问题标题】:extract set of lines using separator from file in UNIX在 UNIX 中使用分隔符从文件中提取行集
【发布时间】:2014-07-03 06:18:52
【问题描述】:

我在一个平面文件中有以下 3 个查询。我想一次从输入文件中提取 1 个查询(例如:第二个查询)。每个查询的分隔符是“;”(分号)。请建议我该怎么做?

输入文件: query.sql

select * from 
DBNAME.table1;

select * from 
DBNAME.table2
;

select * from 
DBNAME.table3
WHERE date<= current_date-30;

输出应该是

输出文件:query_out.sql

select * from 
DBNAME.table2
;

【问题讨论】:

    标签: unix awk sed pattern-matching text-extraction


    【解决方案1】:

    你可以用这个awk

    awk 'BEGIN{RS=";"} NR==2{print $0}' yourfile.sql > output.sql
    

    【讨论】:

      【解决方案2】:

      sat 的回答不会修剪两个 sql 请求之间的空白行,也不会输出结束请求的分号。

      如果您使用的是 gawk(或任何允许 RS 成为正则表达式的 awk 风格),以下内容可能会满足您的需求:

      awk 'BEGIN {RS=";[[:space:]]*"} NR==2 {printf "%s;\n",$0}' yourfile.sql
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-02
        • 2019-05-15
        • 2016-06-03
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 2015-10-11
        • 2014-05-05
        相关资源
        最近更新 更多