[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#\'#\"#g

echo "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.chrom

sed 's/rna10000\t/XR_223342.1\t/g' ref_Zv9_top_level.bed.chrom

sed 's/\]/\"/g' #替换]为“

sed 's/\[/\"/g' #替换[为“

Processing math: 100%

你可能感兴趣的:(CShell,linux,运维,服务器)