2016-08-05 27 views
1

我需要從CSV日誌文件中替換額外的雙引號(字段用逗號分隔並用雙引號括起來)。替換必須僅影響CSV的最後一個字段。通過bash在單個CSV字段中替換多餘的雙引號

輸入日誌文件例如:

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG"dsdajasghsahd" 

預期輸出:

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 

我需要完成在bash或蟒蛇此任務。

+0

你應該描述你到目前爲止試過的東西,以獲得一些幫助。 –

+0

爲什麼同時使用'python'和'bash'標籤? – anubhava

+1

這是我的第一篇文章,我使用了建議的標籤。 – Fantaghost

回答

1

您可以使用AWK:

awk "{gsub(/'/, \"''\", \$NF)} 1" file.csv 

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 
+1

你是那個絕望的點... – 123

+1

你是認真的嗎?由於我跨越了每日限制,大多數這些代表甚至沒有計算在內。很多時候問題可能對專家來說顯得微不足道,但對於海報來說並不那麼簡單。 – anubhava

+1

這不是微不足道的,問題很糟糕,它只是要求代碼,甚至沒有意義。 – 123

0

試試這個;

awk -F, -v OFS="," '{gsub(/\"/,"\47\47",$NF)gsub(/^\47\47/,"\"",$NF);gsub(/\047\047$/,"\"",$NF) }1' file 

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 
+0

它適用於用作示例的單行,但在針對整個日誌運行時,它也會替換用作字段終止符的最後一個雙引號。該行的結尾從「\ r \ n」轉換爲「\ r \ n」 – Fantaghost

相關問題