您的位置:首页 > 其它

awk之取每天的第一条记录和最后一条记录

2011-11-24 20:34 399 查看
文本:

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

2011-11-7 8:31:04

2011-11-7 18:06:30

2011-11-8 8:32:40

2011-11-8 18:08:05

2011-11-9 8:48:20

2011-11-9 18:05:46

2011-11-10 8:38:44

2011-11-10 18:06:05

2011-11-11 8:28:42

2011-11-11 18:10:26

2011-11-14 8:31:16

2011-11-14 18:07:34

2011-11-15 8:16:19

2011-11-16 8:30:57

2011-11-16 18:23:56

2011-11-17 8:32:21

2011-11-17 18:06:09

#取出每天的第一条记录
awk  '!a[$1]++' file
利用数组去重常用的方法
#加个($2==8)的限制条件
awk -F ' |:' '!a[$1]++&&($2==8)' file
#取每天的最后一条记录
awk '!a[$1]++&&i{print i}{i=$0}END{print i}' file
取最后一条只需取首次出现的上面那条即可,通过{i=$0}将$0赋给i,!a[$1]++限制首次出现,首行i为空,会打印一个空行,加个&&i来保证不打印那个空行,最后必须要有END{print i},最后一行要单独打印,通过{i=$0}来实现对上一行的记录是常见用法。
#加个($2==18)的限制条件
awk -F ' |:' '!a[$1]++&&i{print i}{if($2==18)i=$0}END{print i}' file
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: