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:
会员注册
会员登录
个人空间