如何计算unix中awk命令的总和?

时间:2014-11-06 13:18:12

标签: unix awk

我的newProcessFile.txt看起来像这样

total 16
-rw-rw-r--    1 jaind    staff             0 Jul 14 08:54 cdim_landing_addl_addr.out
-rw-rw-r--    1 jaind    staff             0 Jul 17 06:13 cdim_merge_alert_log.out
-rw-rw-r--    1 jaind    staff             0 Jul 11 09:02 merge_log.out
-rw-rw-r--    1 jaind    staff             0 Nov 06 07:12 newProcessFile.txt
-rw-------    1 jaind    staff           969 Aug 13 02:22 nohup.out
-rw-r-----    1 jaind    staff           474 Apr 28 2014  profile_old
drwxr-x---    2 jaind    staff           256 Nov 06 04:45 test_Chiranjib

每当我尝试计算编号为7的列的总和时,它会将输出打印为0。

awk 'BEGIN{ FS = ","; sum = 0; count = 0 } {if(NR >= 2){sum = sum + $7; count ++; print $1,$2,$5,sum}}' newProcessFile.txt

未计算总和。我错过了什么?

2 个答案:

答案 0 :(得分:2)

您需要从awk命令中删除字段分隔符,因为您没有使用","分开字段。

awk 'NR >= 2{sum += $7; print $1,$2,$5,sum}' newProcessFile.txt

我删除了计数器变量以及它在任何地方都没有使用过。

答案 1 :(得分:2)

假设您正在执行当前目录的目录列表,您实际上不应该解析ls的输出。以下是两种选择:

stat -c "%s" * | awk '{sum+=$1} END {print sum}'
perl -E '-f $_ and $sum += -s _ for glob("*"); say $sum'