aNumber|bNumber|startDate|timeZone|duration|currencyType|cost|
22677512549|778|2014-07-02 10:16:35.000|NULL|NULL|localCurrency|0.00|
22675557361|76457227|2014-07-02 10:16:38.000|NULL|NULL|localCurrency|10.00|
22677521277|778|2014-07-02 10:16:42.000|NULL|NULL|localCurrency|0.00|
22676099496|77250331|2014-07-02 10:16:42.000|NULL|NULL|localCurrency|1.00|
22667222160|22667262389|2014-07-02 10:16:43.000|NULL|NULL|localCurrency|10.00|
22665799922|70110055|2014-07-02 10:16:45.000|NULL|NULL|localCurrency|20.00|
22676239633|433|2014-07-02 10:16:48.000|NULL|NULL|localCurrency|0.00|
22677277255|76919167|2014-07-02 10:16:51.000|NULL|NULL|localCurrency|1.00|
這是我在csv文件中的輸入(百萬行的樣本)。 我想根據日期總結持續時間。 我關心的是我要總結第一百萬行 我使用的awk程序是:使用awk從一個大文件中的行「A」到行「B」的總和
test.awk
BEGIN { FS = "|" }
NR>1 && NR<=1000000
FNR == 1{ next }
{
sub(/ .*/,"",$3)
key=sprintf("%10s",$3)
duration[key] += $5 } END {
printf "%-10s %16s,"dAccused","Duration"
for (i in duration) {
printf "%-4s %16.2f i,duration[i]
}}
運行我的腳本
$awk -f test.awk 'file'
輸入我不認爲我的病情NR> 1 & & NR < = 1000000
任何建議?請!
'NR> 1 && NR <= 1000000 FNR == 1'您錯過了';'之間的那些假設是兩個測試。 NR> 1 && NR <= 1000000; FNR == 1'你想要什麼條件控制?帶有'sub'的塊? – 2015-01-09 18:27:50
哇!我收回了從第1行到1000000的所有數據,除了同樣的過去結果之外,還先打印 – Baodbao 2015-01-09 18:35:07
嘗試:'NR == 1 {next} NR> 1000000 {exit}' – 2015-01-09 18:35:35