美文网首页
2023-07-27 linux 使用awk 实现excel中

2023-07-27 linux 使用awk 实现excel中

作者: dashan1928 | 来源:发表于2023-07-26 11:37 被阅读0次

已知表格1中内容为:

Pangenome_ALLmerge    MGAL10B.pep    Orthogroup

HT_HIFI_Bat0035260.1    MGAL_10B003480P1    OG0000006

HT_HIFI_Bat0035260.1    MGAL_10B093273P1    OG0000006

HT_HIFI_Bat0035260.1    MGAL_10B093316P1    OG0000006

HT_HIFI_Bat0035260.1    MGAL_10B093328P1    OG0000006

HT_HIFI_Bat0035260.1    MGAL_10B093379P1    OG0000006

表格2中内容为:

Seq Name    GO Seq    Description    Level

HT_HIFI_Bat0000010.1    GO:0016020    Hypothetical predicted protein    3

HT_HIFI_Bat0000010.1    GO:0031224    Hypothetical predicted protein    4

HT_HIFI_Bat0000010.1    GO:0005575    Hypothetical predicted protein    1

HT_HIFI_Bat0000010.1    GO:0110165    Hypothetical predicted protein    2

已知第一个表格中第一列和最后一列内容中每一行都互相对应,需求是,使用awk在表格2中插入1列,要求插入列的内容和第一个表格的最后一列互相对应,列名称为OG。表格2中原有列都保留。表格列之间都以\t分割。

实现:

awk 'BEGIN{FS=OFS="\t"} FNR==1{print $0, "OG"; next} FNR==NR{og[$1]=$3; next} {print $0, og[$1] ? og[$1] : "NO_OG"}' 表格1 表格2

在这个命令中,BEGIN{FS=OFS="\t"} 表示设置输入和输出字段分隔符为制表符;FNR==1{print $0, "OG"; next} 表示对表格2的第一行添加列名 "OG";FNR==NR{og[$1]=$3; next} 表示对表格1进行处理,将第一列和第三列作为键值对存储在数组 og 中;{print $0, og[$1]} 表示对表格2的每一行,在末尾添加与其第一列对应的表格1中最后一列的值,即 og[$1] ,og[$1] ? og[$1] : "NO_OG" 表示如果数组 og 中存在对应的值,则输出该值,否则输出 "NO_OG"。

注意,这里假设表格1和表格2中的第一行都是标题行。如果不是,则需要根据实际情况修改 FNR==1 的判断条件。另外,由于 awk 默认使用缓冲区,可能会导致输出顺序与输入顺序不一致,因此建议在运行命令后手动检查输出结果

需求:按照需求对列排序,提取列等,

实现:awk 'BEGIN{FS=OFS="\t"} {print $4, $2, $3, $5}' 表格2 > 新表格文件名

需求:删除列中含有NO_OG的行

实现:awk '$2 != "No_OG"' 表格文件名 > 新文件名

相关文章

  • linux中awk的复习

    awk使用格式:awk [选项参数] '内容' '{条件} {动作} {条件} {动作}' 示例1:在linux中...

  • 常用命令-awk

    awk是Linux处理文本的利器,在linux日常处理中,发挥很重要的作用,学会使用awk可以让你的处理文本工作事...

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • AWK 命令详解

    AWK 命令详解 除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk。...

  • Linux常用命令总结

    Linux一次执行多条命令:使用for awk 输出奇数行 awk '{if(FNR%2!=0) print FN...

  • Linux Shell:awk文本处理工具,Linux的SQL神

    摘要:Linux,Shell,awk awk简介 awk是一个强大的文本分析工具,尤其是对linux中的结构化二维...

  • linux三剑客awk教你如何裁剪结果集

    awk awk在Linux中我们称之为输出。在Linux的终端上所有的东西我们都可以用awk来输出赋值。 首先我们...

  • awk实现excel vlookup

    Code 之前一直用vlookup做垂直查找,直到后来接触了测序数据...动辄一个excel几十兆,丐版的MBPv...

  • Linux awk命令详解

    Linux awk命令详解 使用方法 调用awk 入门实例 1. 显示最近登录的5个帐号 awk工作流程是这样的:...

  • awk巩固扩展

    awk 中使用外部shell变量 选项-v可以实现使用外部变量。 如:A=44echo "ABCD" | awk ...

网友评论

      本文标题:2023-07-27 linux 使用awk 实现excel中

      本文链接:https://www.haomeiwen.com/subject/dvdkpdtx.html