分页: 1 / 1

逐行处理文本问题

发表于 : 2012-10-09 13:48
zhangxiaofir
log格式如下

代码: 全选

201201 ***  A ****  name=hahha date=2012  ***** 
201201 **** 1564 ***** 
201201   A **** deat=1564 ***** 
log里面全是以上格式的行 其中***代表各种乱码 每行的列数不同 需要把每行中具有A特定的关键词的行 中的name date 字段后的字符串提取出来 用shell 或者python 该怎么写哈?

Re: 逐行处理文本问题

发表于 : 2012-10-09 16:03
yanyeyy

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b" 

Re: 逐行处理文本问题

发表于 : 2012-10-09 16:10
zhangxiaofir
yanyeyy 写了:

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b" 
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理

Re: 逐行处理文本问题

发表于 : 2012-10-09 16:13
zhangxiaofir
zhangxiaofir 写了:
yanyeyy 写了:

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b" 
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理
还有刚才试了下 结果是一列 能否让单行处理结果出现在一行里 ?

Re: 逐行处理文本问题

发表于 : 2012-10-09 17:03
yanyeyy
zhangxiaofir 写了:
zhangxiaofir 写了:
yanyeyy 写了:

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b" 
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理
还有刚才试了下 结果是一列 能否让单行处理结果出现在一行里 ?

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b -n
可以显示行号,但内容不在一行显示,可以导入另一个文件里再修改
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理???
看不懂什么意思

在一行输出,用python写的.你的问题说的不太清楚,以下做可参考,自己改改吧 :em06

代码: 全选

import re
logfile='/tmp/log' #这是要提取内容的log文件
re_name=re.compile(r'name=\w+\b')
re_date=re.compile(r'date=\w+\b')
for line in open(logfile,'r'):
    name=re_name.findall(line)
    date=re_date.findall(line)
    if len(name)!=0:
        print ' '.join(name),
    if len(date)!=0:
        print ' '.join(date)

Re: 逐行处理文本问题

发表于 : 2012-10-10 13:35
zhangxiaofir
yanyeyy 写了:
zhangxiaofir 写了:
zhangxiaofir 写了:
yanyeyy 写了:

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b" 
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理
还有刚才试了下 结果是一列 能否让单行处理结果出现在一行里 ?

代码: 全选

egrep -o -e "name=\w+\b" -e "date=\w+\b -n
可以显示行号,但内容不在一行显示,可以导入另一个文件里再修改
在shell里面怎么做判断 比如 那行有了个A 然后才对该行进行处理???
看不懂什么意思

在一行输出,用python写的.你的问题说的不太清楚,以下做可参考,自己改改吧 :em06

代码: 全选

import re
logfile='/tmp/log' #这是要提取内容的log文件
re_name=re.compile(r'name=\w+\b')
re_date=re.compile(r'date=\w+\b')
for line in open(logfile,'r'):
    name=re_name.findall(line)
    date=re_date.findall(line)
    if len(name)!=0:
        print ' '.join(name),
    if len(date)!=0:
        print ' '.join(date)
谢谢哈 我大致想要的就是这个