替换除特定列之外的所有列中的模式

替换除特定列之外的所有列中的模式

我想替换每一列中的“冒号”,除了第一列之外。

]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1:NA:58745598:23,0:--:.:TRA:BND00068094:NA:NA:chr10_8544904-chr9_67290502 ./.:NA:58745598:0,4:--:.:TRA:126434_2:NA:NA:chr10_8544903-chr9_67290501

期望的输出

]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1NA5874559823,0--.TRABND00068094NANAchr10_8544904-chr9_67290502 ./.NA587455980,4--.TRA126434_2NANAchr10_8544903-chr9_67290501

尝试过:

sed 's/(chr*.)*.[^: ]//g'

注意:不需要定义列,因为“:”在前四列之后不固定,它可以在任何地方。

答案1

如果您正在考虑“列”,那么您肯定希望 awk 来解析您的内容。理想情况下,您可以访问 GNU awk。

尝试这个:

awk '{for(x=2;x<=NF;x++){gsub(":","",$x)}}1'

测试用例:

$ echo "]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1:NA:58745598:23,0:--:.:TRA:BND00068094:NA:NA:chr10_8544904-chr9_67290502 ./.:NA:58745598:0,4:--:.:TRA:126434_2:NA:NA:chr10_8544903-chr9_67290501" | awk '{for(x=2;x<=NF;x++){gsub(":","",$x)}}1'
]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1NA5874559823,0--.TRABND00068094NANAchr10_8544904-chr9_67290502 ./.NA587455980,4--.TRA126434_2NANAchr10_8544903-chr9_67290501

答案2

尝试使用下面的 sed 命令,效果非常好

command: sed "s/://2g"`

输出

带输入的命令: echo "]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1:NA:58745598:23,0:--:.:TRA:BND00068094:NA:NA:chr10_8544904-chr9_67290502 ./.:NA:58745598:0,4:--:.:TRA:126434_2:NA:NA:chr10_8544903-chr9_67290501"| sed "s/://2g"

输出

]chr9:67290502]N SUPP_VEC=011 SVLEN=0 SVTYPE=TRA 0 0 0 0/1NA5874559823,0--.TRABND00068094NANAchr10_8544904-chr9_67290502 ./.NA587455980,4--.TRA126434_2NANAchr10_8544903-chr9_67290501

相关内容