awk linux 采取差异并添加制表符分隔的列文件



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

即,

col1tcol2tcol3tcol4
hit10t100t0.4
byet150t400t5.6
其结果是:(100-10)

+(400-150)=340

我将如何使用awk进行单行操作?

谢谢。

awk '{ total += $3 - $2 } END { print total }' file

你来了:

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的输入文件名作为参数;保存猫。

最新更新