[Cshell]用sed替换包含单引号的字符串
用sed替换包含单引号的字符串
前言:在Linux中,经常用的替换命令非sed莫属,但是sed也有失灵的时候,比如SV中的address和data,例如:32'h1020_0180等等。此时要做替换的话该怎么办呢?下面介绍寄几种方法来实现sed替换包含单引号的字符串。
sed替换单引号
echo "Cfoo'barxml" | sed "s/'/::/g" | sed 's/::/\\\\:/g' | sed "s/:/'/g" #替换单引号为 \\'
------------------------
sed 替换单引号'
echo "mmm'sss" > test
cat test
把test内容中单引号替换成双引号
sed 's/'"'"/'"''/g' test #==> sed 's/' " ' " / ' " ' '/g' test
- 解析下:
's/' => 要进⾏替换操作,后紧跟匹配字符
"'" => ⽤双引号包裹着单引号
/ => 分割符
'"' => ⽤单引号包裹着双引号
'/g' => 分隔符,全局替换
- 当然还可以使⽤下⾯这两种⽅法替换:
sed s#\\'#\\"#g test #最外层使⽤#分隔,⾥⾯使⽤转义单引号,转义双引号sed "s/'/\\"/g" test #最外层使⽤双引号,⾥⾯使⽤单引号,转义双引号echo "mmm'sss" | sed 's/'"'"/'"''/g'echo "mmm'sss" | sed s#\\'#\\"#gecho "mmm'sss" | sed "s/'/\\"/g"awk '{print "sed '\\''s/"1"t/"2"\\\\t/g'\\'' ref_Zv9_top_level.bed.chrom"}' ref_Zv9_top_level.gff3_transID sed 's/rna10004\\t/XR_223343.1\\t/g' ref_Zv9_top_level.bed.chromsed 's/rna10000\\t/XR_223342.1\\t/g' ref_Zv9_top_level.bed.chromsed 's/\\]/\\"/g' #替换]为“sed 's/\\[/\\"/g' #替换[为“
Processing math: 100%