bash - 如何将任何列值的总和添加到制表符分隔文件中最后一条记录的最后一列

标签 bash unix sed awk

我需要对 col2 求和并将值添加到最后一条记录的最后一列。请指教,我们如何使用 UNIX shell 脚本实现此目的。

E.g Input file:
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   null

Output file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9

最佳答案

假设您想在输出中保留空白:

$ awk '{sum+=$2; s=s $0 ORS} END{ sub("null"ORS"$",sum,s); print s}' file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9

或:

$ awk '{sum+=$2; printf "%s",p} {p=$0 ORS} END{ sub("null$",sum); print}' file
Col1    Col2    Col3    Col4
abc 2   A   null
bcd 3   B   null
adf 4   C   9

关于bash - 如何将任何列值的总和添加到制表符分隔文件中最后一条记录的最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167117/

相关文章:

linux - 将文本附加到文件中的多行的每一行

bash (Linux) 中的 Python3.4 不提供文本着色

c - 如何在 Linux 上构建信号名称数组?

android - 创建 adb pull bash 命令

bash - 命令的回显结果保留回显

bash - Unix uniq命令到CSV文件

linux - 删除包含指定单词的所有行

bash - 从命令行按模式从绑定(bind)配置文件中删除区域 block

linux - 如何在连续的字符流中进行 grep 或 sed?

bash - 最接近值的不同文件,具有不同的行数和其他条件( bash awk 其他)