Awk 有选择地删除小数点的命令

Awk 有选择地删除小数点的命令,awk,Awk,我有一个带有数字属性的基因ID列表,如下所示: 输入文件: Solyc02g080080.3.1 Solyc02g082880.2.1 0.935486990245651 0.00610864337672501 Solyc02g079533.1.1 Solyc02g082880.2.1 0.929128021921794 0.00735626670839373 Solyc02g080670.3.1 Solyc02g082880.2.1 0.973014871168575 0.0010824705

我有一个带有数字属性的基因ID列表,如下所示:

输入文件:

Solyc02g080080.3.1 Solyc02g082880.2.1 0.935486990245651 0.00610864337672501
Solyc02g079533.1.1 Solyc02g082880.2.1 0.929128021921794 0.00735626670839373
Solyc02g080670.3.1 Solyc02g082880.2.1 0.973014871168575 0.00108247051974075
我想删除前两列中的“.”,而不干扰后两列

输出:

Solyc02g080080 Solyc02g082880 0.935486990245651 0.00610864337672501
Solyc02g079533 Solyc02g082880 0.929128021921794 0.00735626670839373
Solyc02g080670 Solyc02g082880 0.973014871168575 0.00108247051974075
我尝试使用:
awk-F.{print$1}文件

但它只打印第一列。非常感谢您的任何建议。谢谢

awk '{
  sub(/\..*/, "", $1)
  sub(/\..*/, "", $2)
  print
}' input.file
作为一种副作用,它将重复的分离器折叠为一个。比如说,

Solyc02g080080.3.1 Solyc02g082880.2.1  0.935486990245651   0.00610864337672501
将是

Solyc02g080080 Solyc02g082880 0.935486990245651 0.00610864337672501

$awk'{for(i=1;iDear Ed,有时我的前两列是
4081.solyc00g0007190.2.1 4081.solyc12g09790.1.1
那么我应该如何更改代码?idk,取决于您希望输出是什么。当您发布一个问题,询问您提供的样本输入和预期输出是否真正代表您的真实数据时,这一点很重要。问以下问题:wup问题有一个更好的例子来获得帮助。
$ awk '{for (i=1;i<=2;i++) sub(/\..*/,"",$i)} 1' file
Solyc02g080080 Solyc02g082880 0.935486990245651 0.00610864337672501
Solyc02g079533 Solyc02g082880 0.929128021921794 0.00735626670839373
Solyc02g080670 Solyc02g082880 0.973014871168575 0.00108247051974075