grep 2个单词,由空格和/或制表符分隔

时间:2020-08-21 20:28:27

标签: shell grep

我在文件中提取了多个表定义(每个文件一个定义),并且我试图从表定义中获取特定属性。 table属性可以是SET或MULTISET,表定义可以像

git pull origin master

OR

CREATE MULTISET TABLE WEB_APP_OWN_TABLES.VARS_WRK ,NO FALLBACK ,

单词CREATE和MULTISET / SET之间可以有多个空格和/或制表符

单词MULTISET / SET和TABLE之间可以有多个空格和/或制表符

单词之间的空格和/或制表符的数量可以随每个定义而变化。我使用下面的命令来获取属性,但是它可以给我诸如“ CREATE_BY_TABLE”的列名。有更好的方法吗?

CREATE SET TABLE WEB_APP_OWN_TABLES.VARS ,NO FALLBACK ,

样本表定义:

*egrep -i "\<CREATE\>\*.\*\<TABLE\>" WEB_APP_OWN_TABLES~VARS_WRK.sql | egrep -i "SET|MULTISET"*

2 个答案:

答案 0 :(得分:0)

以下(扩展的)正则表达式应符合要求

egrep -i 'create[ \t]+(set|multiset)[ \t]+table' filename.txt

答案 1 :(得分:0)

我们使用下面的命令获得所需的结果

with 
cte_carrier_guid (carrier_guid, email, date, carrier_id) as 
    (
    SELECT
        guid as carrier_guid
        ,mc.email 
        ,dt2.date as date
        ,mc.id as carrier_id
    FROM ctms_db_public.msd_carrier mc
    CROSS JOIN public.dim_calendar dt2
    WHERE dt2.date <= CURRENT_DATE 
    AND mc.created_at >= dt2.date
    GROUP BY guid, mc.id, dt2."date", mc.email
    ORDER BY guid, dt2.date asc
    )
    Select top 10 * from cte_carrier_guid 
相关问题