我試圖替換\」使用SED(反斜槓doouble報價)方式「(引號)。替換的sed在Mac OS X Leopard中沒有做什麼預期
sed "s/\\\"/\'/g" file.txt
該命令不正常工作。它代替了所有的「在文本文件中,不僅\」。
它做同樣的事情sed的「S/\」/\「/ g的」 file.txt的
我正在使用Mac OS X Leopard。
有沒有人有線索?
我試圖替換\」使用SED(反斜槓doouble報價)方式「(引號)。替換的sed在Mac OS X Leopard中沒有做什麼預期
sed "s/\\\"/\'/g" file.txt
該命令不正常工作。它代替了所有的「在文本文件中,不僅\」。
它做同樣的事情sed的「S/\」/\「/ g的」 file.txt的
我正在使用Mac OS X Leopard。
有沒有人有線索?
你正在處理臭名昭着的shell引用問題。嘗試在s // g周圍使用單引號,或者添加一個額外的轉義:
sed "s/\\\\\"/\'/g"
額外的逃生工作!謝謝保羅。 – jlfenaux 2010-02-13 17:09:06
我不認爲這正是shell引用問題,因爲問題在於sed對字符串的解釋而不是shell的解釋。 Sed看到s/\「/ \'/ g並且解釋爲」相同「 – 2010-02-13 17:33:00
@William - 我將其描述爲」shell引用問題「,因爲bash」吞下「其中一個逃脫,所以sed看不到 – 2010-02-13 17:50:00
引用bash的問題很有趣。
$ cat input "This is an \"input file\" that has quoting issues." $ sed -e 's/\\"/'"'"'/g' input "This is an 'input file' that has quoting issues."
注意,有對接在一起三根弦,使sed腳本:
s/\\"/
'
/g
的第一個和最後的報價單引號,中間用雙引號引用。
馬修的命令是通過連接兩個字符串,而不是三個:
s/\\"/
'/g
其中第一個是單引號和第二雙引號。
不錯,你可以稍微簡化爲sed -e's/\\「/'」'/ g「輸入 – 2010-02-13 17:06:08
不必使用太多的引號。 \ 042八進制爲"
和\ 047爲八進制單引號
awk '{gsub("\042","\047") }{print}' file
如果有疑問,請添加另一個反斜槓。 – 2010-02-13 16:56:19