1

タブ区切りファイル(ヘッダーなし)があり、3列目と2列目の違いを取り、それらをすべて足し合わせたいと思います。

つまり、

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

結果は次のようになります:(100-10)+(400-150)= 340

awkを使用してこのような操作を1行で行うにはどうすればよいですか?

ありがとう。

4

2 に答える 2

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

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.
于 2012-12-11T02:40:45.013 に答える