2012-12-13 236 views
2

我正在嘗試在awk中編寫一個腳本,(其中包括)用兩個連續的雙引號替換所有雙引號實例。但由於某種原因,我似乎無法妥善避免我的雙引號。使用gsub將雙引號替換爲兩個雙引號?

因此,例如:

Mary had a "little" lamb 

將成爲

Mary had a ""little"" lamb 

感謝好心!

回答

3

你可以這樣說:

echo 'Mary had a "little" lamb' | awk '{ gsub(/"/, "&&") } 1' 

輸出:

Mary had a ""little"" lamb 

1末調用awk的默認塊{ print $0 }

它甚至與SED短:

echo 'Mary had a "little" lamb' | sed 's/"/&&/g' 
+0

嗯,這很有趣。作爲一個更一般的AWK問題,AWK是否將整個文件緩衝到內存中,然後採取行動,還是僅以每行爲基礎運行?我想我想說的是,昂貴的記憶方式? (我現在還不能批准你的答案 - 我必須等5分鐘。) – Waffles

+1

@ user1116858:awk只在內存中保存一條記錄,默認情況下記錄是一條線。 – Thor

+0

非常感謝! – Waffles