2017-09-12 39 views
1

我需要刪除之間的所有數據,並且(和「」與它一起。兩個參數之間刪除任何文字工作不正常

我目前使用下面的命令。

sed -i '/,/,/(/{//!d;s/ ,$//}' test1.txt 

貓test1.txt的

CREATE配置表EDW_EXTRC_TAB.AVER_MED_CLM_HDR_EXTRC

,NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT, DEFAULT MERGEBLOCKRATIO

( EXTRC_RUN_ID INTEGER NOT NULL,

電流輸出

CREATE SET TABLE EDW_EXTRC_TAB.AVER_MED_CLM_HDR_EXTRC

,NO回退( EXTRC_RUN_ID INTEGER NOT NULL,

預期輸出:

CREATE TABLE SET EDW_EXTRC_TAB.AVER_MED_CLM_HDR_EXTRC

( EXTRC_RUN_ID INTEGER NOT NULL,

他怎麼了回覆 ? 有什麼建議嗎?

在此先感謝。

+0

請確保您在這裏發表正確的,可重複的例子。 – hek2mgl

回答

1

兩種方法:

- GNU sed的方法:

sed -z 's/,[^(]*//' test1.txt 

- GNU AWK方法:

awk -v RS= '{ sub(/,[^(]+/,"",$0) }1' test1.txt 

輸出:

CREATE SET TABLE EDW_EXTRC_TAB.AVER_MED_CLM_HDR_EXTRC 
(EXTRC_RUN_ID INTEGER NOT NULL, 
+0

說「sed:無效選項 - 'z'」。 我沒有GNU sed呢? –

+0

忽略-z並運行該命令只會刪除逗號「,」而不是其間的任何數據。 –

+0

@ lfc_07,'-z'選項在這個GNU sed方法中至關重要。你安裝了「gawk」嗎? – RomanPerekhrest

相關問題