我有一个带有数字ID的基因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}' file
但是只打印第一列。任何建议,不胜感激。谢谢
答案 0 :(得分:2)
$ 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
答案 1 :(得分: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