タブ区切りファイル(ヘッダーなし)があり、3列目と2列目の違いを取り、それらをすべて足し合わせたいと思います。
つまり、
col1\tcol2\tcol3\tcol4
hi\t10\t100\t0.4
bye\t150\t400\t5.6
結果は次のようになります:(100-10)+(400-150)= 340
awkを使用してこのような操作を1行で行うにはどうすればよいですか?
ありがとう。
awk '{ total += $3 - $2 } END { print total }' file
Here you go:
awk 'BEGIN{FS="\t"} {sum+=($3-$2)} END{print sum}' input_file
Explanation:
BEGIN{FS="\t"}
: Before we read any lines, set input delimiter to use tabs explicitly (FS
stands for Field Separator), in case one of your fields has spaces. By default awk
uses tabs and spaces as FS
.{sum+=($3-$2)}
: For each line read, add difference between 3rd to 2nd field to sum
END{print sum}
: Once all lines are read, print sum
input_file
: Specify input file name to awk
as an argument; save a cat.