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.00108247051974075

我想删除“.”从前两列开始,不影响最后两列

输出:

Solyc02g080080 Solyc02g082880 0.935486990245651 0.00610864337672501
Solyc02g079533 Solyc02g082880 0.929128021921794 0.00735626670839373
Solyc02g080670 Solyc02g082880 0.973014871168575 0.00108247051974075

我尝试过使用: ojit_代码

但只打印第一列。任何建议都将不胜感激。谢谢

最佳答案

$ 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

关于awk - 有选择地删除小数位的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029124/

相关文章:

linux - 如何编写 awk 脚本来列出当前使用系统的用户以及他们登录的次数?

regex - 将每行的空格替换为该行的第一个字符

language-agnostic - 自动求和数字列并打印总计

awk 比较三个文件中的列并打印不匹配的带有 NA 前缀的列及其内容

bash - 获取 qrencode --version 输出的特定部分

awk 提取列并输出以列标题命名的文件

linux - 如何使用 linux 命令交换重复格式数据 block 内的数字?

php - 用 <?php 替换 PHP 短打开标签的批处理脚本

linux - 如果特定行与其后面的行匹配,则打印该行

linux - 在一行中使用 awk 和 stat 来打印 stat 的值