如何从Linux Shell中的句子中提取单词?

时间:2017-07-27 09:56:00

标签: linux shell

我有一个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文件的上述内容中,我必须单独提取表格或视图名称(fromwhere关键字之间的名称。)

我已经看到很多关于根据位置获取单词的建议,但我不想要那些,因为它们不会像运营商之间那样工作。

1 个答案:

答案 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行之间时,才会打印完整的行