赞助连接

赞助连接

阅 读 文 章

[帮忙]如何搜索多个段内不同行的两个关键字?

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(网络转载) | 时间:2008-06-14 | 浏览:人次 ]

比如有test.txt文本,内容如下:

test1:
mail: aaa@mymail.com
dakfjqopekjk//无关信息
.
.    //中间N行无关信息
.
lastlogintime: 1212551780
.
.    //有或者没有无关行


test2:
mail: bbb@mymail.com
dakfjqopekjk//无关信息
.
.    //中间N行无关信息
.
lastlogintime: 1212551780
.
.    //有或者没有无关行



.
.    //中间包括N段
.


testN:
mail: NNN@mymail.com
dakfjqopekjk//无关信息
.
.    //中间N行无关信息
.
lastlogintime:1212550405
.
.    //有或者没有无关行




现在我需要把mail:后面的帐号,与lastlogintime:后的时间戳整理出来,最好整理成:

aaa.mymail.com  1212551780
bbb.mymail.com  1212551780
.
.
.
NNN.mymail.com  1212550405



各位XDs有没有办法把这样多段内又不同行的整理出来呀? 救急呀.


awk -F: '/^mail/{printf $2}/^lastlogintime/{print $2}' test.txt


谢谢ly5066113按你这样的查找会出现一个问题,如果其中一段只有一个关键字的话,它也会找出来的..有啥方法只找出必须存在这两个关键字的?




QUOTE:原帖由 伤心孤独 于 2008-6-13 11:28 发表
谢谢ly5066113按你这样的查找会出现一个问题,如果其中一段只有一个关键字的话,它也会找出来的..有啥方法只找出必须存在这两个关键字的?
awk -F: '/^mail/{a=$2}/^lastlogintime/&&a!=""{print a,$2;a=""}' test.txt


哇,谢谢你,,.看来awk还真博大精深,要好好学习.


awk -F: '/^mail/{a=$2}/^lastlogintime/&&a!=""{print a,$2;a=""}' test.txt

可以下面这样解释吗?

找到mail开头的,定义a为第二列内容,再找lastlogintime,而且a不等于空,如果达到以上条件,列印出:a,符合lastlogintime的$2,a="",最后这个a=""是不是起对a初始化的作用?




需要GNU sed:
sed -n '/mail: */{s///;h;};/lastlogintime: */{s///;H;g;s/\n/ /;p;}'


我用grep实现:

grep -e 'mail.*mymail.com\|lastLoginTime' test.txt

但是结果是分两行的,您有什么方法可以改进一下这命令吗?






QUOTE:原帖由 woodie 于 2008-6-13 11:44 发表
需要GNU sed:
sed -n '/mail: */{s///;h;};/lastlogintime: */{s///;H;g;s/\n/ /;p;}'
我试了下,不成功呀,能稍微解释一下这个命令吗?,我解释不了.有点看不懂,呵呵.:em03:




QUOTE:原帖由 伤心孤独 于 2008-6-13 11:49 发表


我试了下,不成功呀,能稍微解释一下这个命令吗?,我解释不了.有点看不懂,呵呵.:em03:
TAG标签 : 同行 两个 关键字 多个 如何 搜索 帮忙 // 无关 信息

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表
网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.