2016-03-09 325 views
1

我的文件test.csv包含記錄`Ashish`。我想全球取代單引號'Ashish'UNIX Sed命令用'替換'

我試過這個命令:

sed 's/`/'/g' test.csv 

,但它無法正常工作。請指教。

回答

2

TR是替換字符正確的工具:

echo '`' | tr \` \' 
1

嘗試在外面使用雙引號"並逃避背景。

sed "s/\`/'/g" Test.in > Test.out 

另外,如果你想改變原來的文件,你必須使用-i標誌。

sed -i "s/\`/'/g" Test.in 
0

你需要躲避'`字符:

sed s/\'/\`/g test.csv > out.csv 
+1

你做的還不止這些 - 您刪除腳本分隔符「,否則你不能在''-delimited'腳本內部轉義''',但這樣做並且不會用雙引號替換,你現在必須避免使用反引號。 –

0

原因失敗是因爲它是無法在單引號字符串中放置單引號:https://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes

解決方法是這樣的:

  • sed 's/`/'"'"'/g'
    • 連接一個單引號字符串('s/`/')用雙引號字符串("'")和另一個單引號字符串('/g'),或
  • sed 's/`/'\''/g'
    • 串聯單引號的字符串用單引號和另一個單引號字符串,或
    • 在其他的答案給出
  • 其他報價策略