2017-06-04 58 views
0

可以說我有一個名爲somedata.txt文件,我試圖取代:使用AWK來代替某些特殊的代碼

\ 「

即去除\ 我正在嘗試使用AWK來做到這一點。你能幫忙嗎?

+1

到目前爲止您嘗試了什麼? –

+0

我真的不擅長這一點,我不知道如何處理語法。嘗試使用八進制代碼: awk'{gsub(「\ 134 \ 042」,「\ 042」)} 1'somedata.txt –

回答

2

您將需要避免兩個字符\"像圖所示

awk '{gsub("\\\\\"", "\"")}1' somedata.txt 

或者,如果你可以用sed它變得更簡單

sed 's/\\"/"/g' somedata.txt 

sed還允許就地編輯(標誌-i)至更新原始文件

sed -i 's/\\"/"/g' somedata.txt 
+0

在awk斜槓regexp沒有引用包含regexp的字符串變得更近:'awk'{gsub(/ \\「/,」\「」)} 1''或'awk -vq = \''{gsub(/ \\「/,q)} 1''和[_recent gawk_ has inplace](https:// stackoverflow.com/questions/16529716/awk-save-modifications-in-place/) –

+0

謝謝你們倆。 @Pradip我從來沒有使用sed,有沒有辦法將兩個查找/替換和更新原始文件?我還需要用新的行替換\ n。 awk'{gsub(/ \\ n /,「\ n」)} 1'somedata.txt –

+0

@ dave_thompson_085:感謝指針 @CharlieC:可以將多個查找/替換表達式組合起來使用分號';'(在'sed'和'awk'中) 在這種情況下,'awk -i inplace'{gsub(/ \\「/,」\「」); gsub(/ \\ n /,「\ n」)} 1'somedata.txt' –

1

可以在VIM編輯器還打開的文件,並嘗試這個辦法: 按esc然後

:%s_oldString_newString_g 

對於你的情況,這是

:%s_\\\"_\"_g 

由於「和\是特殊字符,需要在字符之前添加一個\以使命令執行。