2017-07-27 53 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時,即完成行纔會打印,即在從行和行之間