删除具有可变数字的模式

时间:2019-01-16 14:51:37

标签: awk sed

我有一个包含1056列的文件,其中每一列看起来都是这样(这是4列的子集):

 0|0:0.2   0|0:0.03   0|0:0.02   0|0:0
 0|0:0.04  0|0:0.7    0|0:0.05   0|0:1.3

我想从每一列和每一行中删除双点和数字部分。

我只为一列尝试过此代码,但实际上不起作用...

awk '{gsub(":[0-9]","",$1)}' file > file.mod 

我希望我的输出文件看起来像这样:

0|0   0|0   0|0   0|0
0|0   0|0   0|0   0|0

非常感谢您:)

2 个答案:

答案 0 :(得分:1)

如果您的Input_file与显示的示例相同,那么请尝试以下操作。

awk '{for(i=1;i<=NF;i++){sub(/:.*/,"",$i)}} 1' Input_file

或者也可以通过@Socowi注释添加解决方案,如下所示。

awk '{gsub(":[0-9.]*",""); print}'  Input_file

答案 1 :(得分:0)

您也可以尝试Perl

$ cat sonia.txt
 0|0:0.2   0|0:0.03   0|0:0.02   0|0:0
 0|0:0.04  0|0:0.7    0|0:0.05   0|0:1.3

$ perl -pe ' s/:\S+//g ' sonia.txt
 0|0   0|0   0|0   0|0
 0|0  0|0    0|0   0|0

$