2013-04-08 57 views
0

我有一个这样的文件之间:去除结肠癌和 - 号

chr1:34610-36081   1.20286 
chr1:69090-70008   0.0392553 
chr1:321083-321115  0 
chr1:321145-321207  85.0555 
chr1:367658-368597  0.114414 

而且我想在转换为:

chr1 34610 36081   1.20286 
chr1 69090 70008   0.0392553 
chr83 321115  0 
chr1 321145 321207  85.0555 
chr1 367658 368597  0.114414 

我可以去掉结肠,但我不能创造之间的空间他们

cut -d: -f1,2 file | sed s/\:/\/g 
+0

SED S/\://G不起作用? – Melanie 2013-04-08 21:18:21

+0

没有它给我这样chr134610-36081 1.20286 chr169090-70008 0.0392553 chr83-321115 0 chr1321145-321207 85.0555 chr1367658-368597 0.114414 chr1420205-421839 0.0936687我想在两者之间创造空间,并删除 - 位置之间创建空间 – abh 2013-04-08 21:20:29

回答

2

简单的办法是sed

$ sed 's/[:-]/ /g' file 
chr1 34610 36081   1.20286 
chr1 69090 70008   0.0392553 
chr83 321115  0 
chr1 321145 321207  85.0555 
chr1 367658 368597  0.114414 

存储改变回文件就可以了使用-i选项:

$ sed -i 's/[:-]/ /g' file 
+0

非常感谢你 – abh 2013-04-08 21:23:57

+0

@ user2133307不要忘记提出所有有用的答案并接受最有用的答案,你可以通过点击答案旁边的勾号来完成。 – 2013-04-08 21:25:00

+0

是的,我正在等待时间来完成 – abh 2013-04-08 21:27:09

1

到目前为止,我们还tr解决方案和sed substitution解决方案,AWK是升技过来杀掉,但我们可以sed + tr玩:甚至比短sed s/../../ :)

sed 'y/:-/ /' file 

exampe:

kent$ echo "chr1:34610-36081   1.20286 
chr1:69090-70008   0.0392553 
chr1:321083-321115  0 
chr1:321145-321207  85.0555 
chr1:367658-368597  0.114414"|sed 'y/:-/ /' 
chr1 34610 36081   1.20286 
chr1 69090 70008   0.0392553 
chr83 321115  0 
chr1 321145 321207  85.0555 
chr1 367658 368597  0.114414 
+0

所以做sed的/ [: - ]//'文件 – Melanie 2013-04-08 21:20:52

+0

@MarkReed这个解决方案是新的,不是吗?^_^ – Kent 2013-04-08 21:27:27

3

您可以使用此tr

tr ':-' ' ' < /your/file