免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1439 | 回复: 4

[文本处理] 使用sed命令查看匹配用户 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-11-14 16:48:17
发表于 2015-11-30 14:07 |显示全部楼层
本帖最后由 fantingftt123 于 2015-11-30 14:43 编辑

各位,现在有这样一个需求:在Linux系统中last命令会显示用户登录系统的信息,现在就是要根据用户名和登录时间去last显示的结果中去匹配看该用户在相应的时间点有没有登录系统,现在用户提供的用户名和登录时间格式如下:
从帐号        开始时间
manager        2015-11-25 16:07:46:397
gkpt         2015-11-22 16:14:43:496



last显示的结果如下:
manager  pts/1        10.97.102.140    Mon Nov 30 13:58   still logged in   
manager  pts/1        10.97.102.140    Mon Nov 30 13:29 - 13:44  (00:15)   
manager  pts/1        10.97.102.140    Mon Nov 30 13:21 - 13:28  (00:07)   
manager  pts/1        10.97.102.140    Wed Nov 25 16:07 - 16:11  (00:03)   
gkpt     pts/2        10.97.102.136    Tue Nov 24 15:01 - 15:02  (00:00)   
gkpt     pts/1        10.97.102.136    Tue Nov 24 15:01 - 15:10  (00:09)   
gkpt     pts/2        10.97.102.136    Tue Nov 24 14:31 - 14:31  (00:00)   
gkpt     pts/1        10.97.102.136    Tue Nov 24 14:31 - 14:40  (00:09)   
gkpt     pts/2        10.97.102.136    Tue Nov 24 13:06 - 13:06  (00:00)   
gkpt     pts/1        10.97.102.136    Tue Nov 24 13:06 - 13:15  (00:09)   
gkpt     pts/1        10.97.102.112    Sun Nov 22 16:14 - 16:14  (00:00)
记录条数过多,只粘贴部分内容作为事例。

我记得好像sed这个命令不是可以根据文件内容进行匹配吗?或者使用AWK该怎样实现啊?

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
发表于 2015-11-30 15:54 |显示全部楼层
本帖最后由 haooooaaa 于 2015-11-30 16:06 编辑
  1. awk -F'[ \\-:]+' 'NR==FNR{a[$1]=strftime("%a %b %d %H:%M",mktime($2" "$3" "$4" "$5" "$6" 00"));b[$1]=$5 $6;next}$0~a[$1]&&b[$1]<=$9$10' filea fileb
  2. manager  pts/1        10.97.102.140    Wed Nov 25 16:07 - 16:11  (00:03)
  3. gkpt     pts/1        10.97.102.112    Sun Nov 22 16:14 - 16:14  (00:00)
复制代码

论坛徽章:
1
摩羯座
日期:2014-11-14 16:48:17
发表于 2015-12-01 09:51 |显示全部楼层
那使用sed可以实现吗?

论坛徽章:
1
摩羯座
日期:2014-11-14 16:48:17
发表于 2015-12-01 09:53 |显示全部楼层
那使用sed命令可以实现吗?

论坛徽章:
1
摩羯座
日期:2014-11-14 16:48:17
发表于 2015-12-01 11:52 |显示全部楼层
回复 2# haooooaaa   使用这个脚本是不是有问题啊!filea是last显示的结果。fileb是要匹配的结果。但使用你这个脚本过滤出来的结果不正确啊!

[wasadmin@HAZZ-IRMS-SJYY01 ~]$ awk -F'[ \\-:]+' 'NR==FNR{a[$1]=strftime("%a %b %d %H:%M",mktime($2" "$3" "$4" "$5" "$6" 00"));b[$1]=$5 $6;next}$0~a[$1]&&b[$1]<=$9$10' b.txt a.txt
wasadmin        2015-11-26 14:19:37:463
wasadmin        2015-11-26 14:18:24:212
wasadmin        2015-11-25 16:59:16:777
gkpt    2015-11-22 16:12:18:637   
jcwh    2015-11-19 16:18:07:828   


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP