awk之取每天的第一條記錄和最後一條記錄
阿新 • • 發佈:2019-02-10
file: 2011-10-25 8:41:20 2011-10-25 8:41:38 2011-10-25 18:10:09 2011-10-26 8:29:05 2011-10-26 18:07:27 2011-10-27 8:35:41 2011-10-27 18:51:18 2011-10-28 8:38:00 2011-10-28 18:08:01 2011-10-29 8:46:13 2011-10-29 18:08:00 2011-10-31 18:05:33 2011-11-1 8:33:16 2011-11-1 18:07:07 2011-11-2 8:29:46 2011-11-2 18:05:41 2011-11-3 8:29:17 2011-11-3 18:04:40 2011-11-4 8:34:29 2011-11-4 18:10:23 #取出每天的第一條記錄 awk '!a[$1]++' file !a[$1]++取第一次出現的 #統計相同的日期的個數 awk '{a[$1]++}END{for(i in a)print i,a[i]}' file #加個($2==8)的限制條件 awk -F ' |:' '!a[$1]++&&($2==8)' file #取每天的最後一條記錄 awk '!a[$1]++&&i{print i}{i=$0}END{print i}' file awk 'NR>1{if($1!=x)print y}{x=$1;y=$0}END{print $0}' file 取最後一條只需取首次出現的上面那條即可,通過{i=$0}將$0賦給i,!a[$1]++限制首次出現, 首行i為空,會列印一個空行,加個&&i來保證不列印那個空行,最後必須要有END{print i}, 最後一行要單獨列印 {i=$0}儲存上一行的記錄是常規用法。 if($1!=x)print y}{x=$1;y=$0} 儲存$1 $0 #加個($2==18)的條件 awk -F ' |:' '!a[$1]++&&i{print i}{if($2==18)i=$0}END{print i}' file