我的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
未计算总和。我错过了什么?
答案 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'