1

我有一个制表符分隔文件(无标题),我想获取第 3 列和第 2 列的差异,然后将它们加在一起。

IE,

col1\tcol2\tcol3\tcol4
hi\t10\t100\t0.4
bye\t150\t400\t5.6

结果将是:(100-10)+(400-150)=340

我将如何使用 awk 进行这样的操作?

谢谢。

4

2 回答 2

3
awk '{ total += $3 - $2 } END { print total }' file
于 2012-12-11T02:36:02.397 回答
1

干得好:

awk 'BEGIN{FS="\t"} {sum+=($3-$2)} END{print sum}' input_file

解释:

  • BEGIN{FS="\t"}:在我们阅读任何行之前,将输入分隔符设置为显式使用制表符(FS代表字段分隔符),以防您的某个字段有空格。默认情况下awk使用制表符和空格作为FS.
  • {sum+=($3-$2)}:对于读取的每一行,将第 3 到第 2 场之间的差异添加到sum
  • END{print sum}:读取所有行后,打印sum
  • input_file: 将输入文件名指定awk为参数;拯救一只猫。
于 2012-12-11T02:40:45.013 回答