我的输入文件如下:
scaffold100 115050 116050 1000 115050 124008 2
scaffold100 1167811 1168811 1000 1167811 1568661 0
scaffold100 151385 152385 1000 151385 193501 4
scaffold100 1585695 1586695 2000 1585695 1644609 5
scaffold100 1654143 1655143 2000 1654143 1673659 3
scaffold100 1711976 1712976 2000 1711976 1843374 1
我正在学习AWK,我想用它来根据第4列对第7列求和。 也就是说,如果第4列等于1000,则总结2 + 0 + 4 = 6并打印。
我正在使用这段代码,但我不明白我做错了什么:
awk '{if($4==1000) {sum+=$7;n++}END{print sum}}' file
答案 0 :(得分:2)
您可以使用此awk
:
awk '$4==1000{sum+=$7}END{print sum+0}' file
输出:
$ awk '$4==1000{sum+=$7}END{print sum+0}' a
6
另一个awk
:
awk '{arr[$4]+=$7}END{for(val in arr){print val,arr[val]}}' file
输出:
$ awk '{arr[$4]+=$7}END{for (val in arr) {print val,arr[val]}}' a
2000 9
1000 6
答案 1 :(得分:1)
你的开口和闭合花括号有点混乱。
$ cat data
scaffold100 115050 116050 1000 115050 124008 2
scaffold100 1167811 1168811 1000 1167811 1568661 0
scaffold100 151385 152385 1000 151385 193501 4
scaffold100 1585695 1586695 2000 1585695 1644609 5
scaffold100 1654143 1655143 2000 1654143 1673659 3
scaffold100 1711976 1712976 2000 1711976 1843374 1
$ awk 'BEGIN{sum=0}{if($4==1000) {sum+=$7}}END{print sum}' data
6
或
$awk '$4==1000 {sum+=$7} END{print sum}' data
6