我有一个shell文件,其中包含以下SQL语句:
SELECT distinct vpi.pin_id_e
FROM MSSINT.V_DSLAMS vd,
MSSINT.v_pin_inventory_old vpi
where vd.dslam like '%@%'
and vd.dslam_id = vpi.dslam_id ;
select pa.circuit_design_id,pa.node_address,c.exchange_carrier_circuit_id,c.type,c.rate_code,c.status
from ASAP.port_address pa,
asap.circuit c
where pa.equipment_id = 4561233 and pa.circuit_design_id is not null
and pa.circuit_design_id = c.circuit_design_id;
在我的shell文件的上述内容中,我必须单独提取表格或视图名称(from
和where
关键字之间的名称。)
我已经看到很多关于根据位置获取单词的建议,但我不想要那些,因为它们不会像运营商之间那样工作。
答案 0 :(得分:0)
awk 'toupper($0) ~ /^FROM/ { getline;flag=1 } toupper($0) ~ /^WHERE/ { flag=0 }flag' filename
使用awk,将字符串转换为大写,然后在行的开头对FROM进行模式匹配。如果存在,请在下一行中读取并将标志设置为1。当在行的开头遇到WHERE时,将该标志设置为0.然后,只有当flag设置为1,即from和where行之间时,才会打印完整的行