删除冒号和 - 数字之间

时间:2013-04-08 21:16:06

标签: unix sed awk

我有一个这样的文件:

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

3 个答案:

答案 0 :(得分:3)

您可以使用tr

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

答案 1 :(得分: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

答案 2 :(得分:1)

到目前为止,我们有tr解决方案和sed substitution解决方案,awk有点矫枉过正,但我​​们可以使用sed + tr来播放它:甚至比sed s/../../更短:)< / p>

sed 'y/:-/  /' file

示例: