我有一个制表符分隔的文件(没有标题),我想取第 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
的输入文件名作为参数;保存猫。