2017-07-27 56 views
0

我有在它下面的SQL语句的shell文件:如何从Linux Shell中的句子中提取单词?

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关键字之间)。

我已经看到了很多基于位置获得单词的建议,但我不想要这些,因为它们不会像操作员之间那样工作。

回答

0
awk 'toupper($0) ~ /^FROM/ { getline;flag=1 } toupper($0) ~ /^WHERE/ { flag=0 }flag' filename 

使用awk,将字符串转换为大写,然后在该行的开头对模式匹配FROM。如果存在,请阅读下一行并将标志设置为1。当在行的开始处遇到WHERE时,将该标志设置为0.只有当标志设置为1时,即完成行才会打印,即在从行和行之间