2014-11-06 36 views
0

我newProcessFile.txt看起來像這樣如何計算unix中awk命令內的和?

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

第7列?你正在添加這個月的日子? – 2014-11-06 14:42:03

回答

2

您需要從awk命令中刪除字段分隔符,因爲您沒有使用「,」來分隔字段。

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

我已經刪除了計數器變量以及它沒有在任何地方使用。

+0

我對您的代碼進行了一些更改,如果您願意,可隨時回滾編輯。希望編輯總結不言自明:) – 2014-11-06 13:47:20

+1

將變量初始化爲零不是必須的。 – 2014-11-06 14:49:14

2

假設您正在執行當前目錄的目錄列表,您實際上不應該分析ls的輸出。這裏有兩個備選方案:

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