代码之家  ›  专栏  ›  技术社区  ›  mashimena

如何在Linux中提取列然后通过计算添加新列

  •  0
  • mashimena  · 技术社区  · 1 年前

    我有如下文本文件:

       ID   Grade1   Grade2  Grade3
     JK01       92       84      88
     JK02       87       80      93
     JK03       89       98      95
    

    我想提取特定的列,然后使用awk添加两列。 Weight 来自的遗嘱 Grade2 *1.5+2 Note 是一个特定的数字: 17 。 期望输出,如:

       ID   Grade2  Weight  Note
     JK01       84     134    17
     JK02       80     122    17
     JK03       98     149    17
    

    我正在使用以下命令来实现这一点

    awk '{print $1,$3,$3*1.5+2, 17}' file.txt > file.tem.txt
    

    但我得到了

    ID Grade2 2 17
    JK01 84 128 17
    JK02 80 122 17
    JK03 98 149 17
    

    的标头 重量 笔记 不对。 我也试过

    awk -F, '{print $1,$3,"Weight", "Note"; next}
             {print $0,$2*1.5+2,17}' file.txt > file.tem.txt
    

    类型 how to create column using awk with column name ,仍然无法获得所需的输出。如果您能提供任何建议,我们将不胜感激。

    1 回复  |  直到 1 年前
        1
  •  1
  •   Freeman    1 年前

    看看这个

    awk 'BEGIN { OFS="\t" } NR==1 { print $1, $3, "Weight", "Note" } NR>1 { weight = $3 * 1.5 + 2; print $1, $3, weight, "17" }' file.txt
    

    输出

    ID  Grade2  Weight  Note
    JK01  84     128     17
    JK02  80     122     17
    JK03  98     149     17