【发布时间】:2016-03-10 00:52:27
【问题描述】:
我的文件test.csv 包含记录`Ashish`。我想用单引号 'Ashish' 全局替换它。
我试过这个命令:
sed 's/`/'/g' test.csv
但它不起作用。请指教。
【问题讨论】:
我的文件test.csv 包含记录`Ashish`。我想用单引号 'Ashish' 全局替换它。
我试过这个命令:
sed 's/`/'/g' test.csv
但它不起作用。请指教。
【问题讨论】:
tr 是替换字符的正确工具:
echo '`' | tr \` \'
【讨论】:
尝试在外部使用双引号 " 并转义反引号。
sed "s/\`/'/g" Test.in > Test.out
另外,如果要更改原始文件,则必须使用-i 标志。
sed -i "s/\`/'/g" Test.in
【讨论】:
您需要转义 ' 和 ` 字符:
sed s/\'/\`/g test.csv > out.csv
【讨论】:
's,否则您无法在 '-delimited 脚本中转义 ',而是通过执行那而不是用双引号替换你现在也必须逃避反引号。
失败的原因是因为无法在单引号字符串中放置单引号:https://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes
解决方法是这样的:
sed 's/`/'"'"'/g'
's/`/') 与双引号字符串 ("'") 和另一个单引号字符串 ('/g') 连接,或者sed 's/`/'\''/g'
【讨论】: