一直以來都認為awk只能在linux\unix中才能使用,今天偶然查到有window版本的awk。
安裝設定path,包含安裝目錄:c:\program files (x86)\gnuwin32\bin
說明: 源資料是模擬售票機的歷史記錄,字段含義:銷售日期,出發站名稱,到達站名稱,購買票的數量,總金額(day_pass表示通票)
2015-11-16 16:40
:ss,aaa,ddd,2 tickets,4 cny
2015-11-16 16:40
:ss,aaa,day_pass,1 ticket,10 cny
2015-11-16 16:40
:ss,aaa,eee,3 tickets,6 cny
2015-11-16 16:45
:ss,bbb,day_pass,2 tickets,20 cny
2015-11-16 16:49
:ss,ccc,day_pass,1 ticket,10 cny
2015-10-17 19:54
:34,aaa,ddd,1 tickets,2 cny
2015-10-17 19:55
:10,aaa,eee,1 tickets,2 cny
2015-10-17 19:56
:15,aaa,eee,1 tickets,2 cny
2015-10-17 20:14
:13,aaa,eee,1 tickets,2 cny
2015-10-17 20:20
:35,aaa,ddd,1 tickets,2 cny
2015-10-17 20:29
:24,aaa,ddd,1 tickets,2 cny
2015-10-17 20:29
:55,aaa,day_pass,1 tickets,10 cny
2015-10-17 20:49
:02,aaa,day_pass,1 tickets,10 cny
2015-10-17 20:51
:36,aaa,ddd,1 tickets,2 cny
2015-10-03 23:47
:23,aaa,ccc,1 ticket,2 cny
2015-10-03 23:47
:36,aaa,ccc,1 ticket,2 cny
2015-10-03 23:47
:54,aaa,day_pass,1 ticket,10 cny
2015-10-03 23:48
:10,aaa,bbb,2 tickets,4 cny
2015-10-06 11:10
:07,aaa,eee,1 ticket,2 cny
2015-10-09 09:14
:51,aaa,eee,2 tickets,4 cny
2015-10-09 09:25
:12,aaa,fff,1 ticket,2 cny
2015-10-10 03:32
:26,aaa,ddd,1 tickets,4 cny
2015-10-10 03:32
:32,aaa,eee,3 tickets,12 cny
2015-10-10 03:35
:16,aaa,day_pass,1 tickets,10 cny
2015-10-10 03:35
:21,aaa,day_pass,1 tickets,10 cny
2015-10-10 04:02
:44,aaa,ccc,1 tickets,2 cny
2015-10-10 04:06
:32,aaa,ccc,1 tickets,2 cny
2015-10-10 04:38
:57,aaa,ccc,1 tickets,2 cny
2015-10-11 02:23
:35,aaa,ccc,1 tickets,2 cny
2015-10-11 02:26
:05,aaa,ccc,1 tickets,2 cny
2015-10-11 02:27
:16,aaa,ccc,1 tickets,2 cny
2015-09-17 20:26
:19,aaa,ddd,1 ticket,2 cny
2015-09-17 20:30
:20,aaa,ddd,2 tickets,2 cny
2015-09-17 20:30
:39,aaa,fff,1 ticket,2 cny
2015-09-17 20:36
:29,aaa,ddd,1 ticket ,2 cny
2015-09-17 20:46
:42,aaa,ddd,1 ticket ,2 cny
2015-09-17 20:47
:13,aaa,eee,4 tickets ,8 cny
2015-09-17 20:49
:16,ddd,day_pass,1 ticket,10 cny
2015-09-17 21:01
:08,aaa,ddd,1 ticket ,2 cny
2015-09-17 21:01
:25,aaa,eee,3 tickets ,2 cny
2015-09-17 21:03
:41,ddd,fff,1 ticket ,2 cny
2015-09-17 21:06
:57,aaa,fff,2 tickets ,4 cny
2015-09-17 21:27
:20,fff,day_pass,1 ticket ,10 cny
2015-09-17 21:51
:58,aaa,fff,1 ticket ,2 cny
2015-09-18 16:43
:18,aaa,ddd,2 tickets ,4 cny
2015-09-18 17:32
:28,aaa,eee,1 ticket ,2 cny
2015-09-18 18:06
:49,aaa,eee,1 ticket ,2 cny
2015-09-25 09:46
:42,aaa,fff,1 ticket ,2 cny
2015-09-25 09:47
:13,bbb,eee,1 ticket ,2 cny
2015-09-25 09:48
:09,bbb,fff,1 ticket ,2 cny
2015-09-25 10:06
:32,aaa,ddd,8 tickets ,16 cny
業務邏輯說明:從歷史記錄中查詢一段時間內,某個出發站累計賣出了多少票(按照日期和到達站進行分組統計)
gawk -f "[, ]"
"$3~/(%1)/ && ($1 >=\"%2\" && $1
<=\"%3\") " history.txt|gawk "end"| sort > temp.txt
使用安裝包中的awk和gawk都可以
query.cmd aaa
2015-10-01
2015-10-31
-結果
2015-10-03 bbb 2
2015-10-03 ccc 2
2015-10-03 day_pass 1
2015-10-06 eee 1
2015-10-09 eee 2
2015-10-09 fff 1
2015-10-10 ccc 3
2015-10-10 day_pass 2
2015-10-10 ddd 1
2015-10-10 eee 3
2015-10-11 ccc 3
2015-10-17 day_pass 2
2015-10-17 ddd 4
2015-10-17 eee 3
static
void main(string args)}}
}catch(exception e)
finally
console.read();
}
awk中使用迴圈
awk 指令碼有三個主要部分 begin 和 end 函式 都可選 使用者自己寫的每次要執行的函式。某種程度上,awk 的主體部分就是乙個迴圈,因為函式中的命令對每一條記錄都會執行一次。然而,有時你希望對於一條記錄執行多次命令,那麼你就需要用到迴圈。來學習一下多次執行同一條命令的不同型別的迴圈。aw...
awk中使用迴圈
awk 指令碼有三個主要部分 begin 和 end 函式 都可選 使用者自己寫的每次要執行的函式。某種程度上,awk 的主體部分就是乙個迴圈,因為函式中的命令對每一條記錄都會執行一次。然而,有時你希望對於一條記錄執行多次命令,那麼你就需要用到迴圈。來學習一下多次執行同一條命令的不同型別的迴圈。aw...
awk中使用shell變數
其實在awk裡,是不能直接使用shell變數的 方法是 awk v 選項讓awk 裡使用shell變數 time 60 awk v time time begin 這樣要注意 在awk裡,time不能加 符號。網上說如下方法都可行 一 var 這種寫法大家無需改變用 括起awk程式的習慣,是老外常用...