2013-04-08 108 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