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
chr1 321083 321115        0
chr1 321145 321207        85.0555
chr1 367658 368597        0.114414

我可以删除冒号,但我不能在它们之间创建一个空格

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

3 回答 3

3

您可以tr为此使用:

tr ':-' ' ' < /your/file
于 2013-04-08T21:20:47.493 回答
2

最简单的解决方案是sed

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

要将更改存储回文件,您可以使用以下-i选项:

$ sed -i 's/[:-]/ /g' file
于 2013-04-08T21:19:04.223 回答
1

到目前为止,我们有tr解决方案和sed substitution解决方案,awk 有点过头了,但我们可以玩它sed + tr:甚至比sed s/../../:)

sed 'y/:-/  /' file

例如:

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
chr1 321083 321115        0
chr1 321145 321207        85.0555
chr1 367658 368597        0.114414
于 2013-04-08T21:18:52.023 回答