我有一个制表符分隔文件(没有标题),我想区分第3列和第2列,然后将它们全部加在一起。
即,
col1\tcol2\tcol3\tcol4
hi\t10\t100\t0.4
bye\t150\t400\t5.6
结果将是:(100-10)+(400-150)= 340
我如何使用awk单行进行此类操作?
感谢。
答案 0 :(得分:3)
awk '{ total += $3 - $2 } END { print total }' file
答案 1 :(得分: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
作为参数;拯救一只猫。