2014-09-10 82 views
0

輸入更換一次報價GSUB沒事

aaaa, bbbb, ccc, "dddd, ddd1", eee 
eee, fff, ggg, hhh 

我覺得gsub應該這樣做,但如何告訴用什麼來取代「只有這樣,如果「在所有行中只有一次(有時發生錯誤)。

回答

1

這應該這樣做:

awk -F'"' 'NF==2{sub(/"/,"")}7' file 
+0

如果有3個引號會怎麼樣? – 2014-09-10 08:59:12

+0

@Jidder OP只詢問**一次** case。上面的單行是解決OP的問題。它有3個引號,解決方案將無法工作。 – Kent 2014-09-10 09:18:31

+0

@Jidder我不明白你爲什麼我的命令會刪除'''如果一行中有三個?如果有3''','NF == 2'會是'false',或者我錯了嗎? – Kent 2014-09-10 10:19:16

0

你可以試試awk命令下面,

$ awk '/^[^"]*"[^"]*$/{sub(/"/,"")}1' file 
aaaa, bbbb, ccc, "dddd, ddd1", eee 
eee, fff, ggg, hhh 

的搜索模式^[^"]*"[^"]*$其中有且只有一個"報價行相匹配。刪除該行的雙引號將會給你想要的結果。 sub函數足以從行中刪除單個字符。

+0

作品般的魅力! – Maris 2014-09-10 10:40:56

+0

如果有3個「」「那麼也應該刪除一個」。如果五,比刪除1個報價。 – Maris 2014-09-10 10:46:55

+0

從哪裏(從哪個位置)刪除一個'''? – 2014-09-10 10:52:31