2016-03-09 314 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'
    • 串联单引号的字符串用单引号和另一个单引号字符串,或
    • 在其他的答案给出
  • 其他报价策略