免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1102 | 回复: 4
打印 上一主题 下一主题

请教一个文本处理的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-20 15:47 |只看该作者 |倒序浏览
一个日志文件
我想把含有usernames这个字符串的行之间的部分取出来做处理(第二个usernames所在的行一定是整个日志文件的最末行)


  1. # -usernames-
  2. quekehanmu
  3. 0 8692 5614 54422269 18 1084986808
  4. kyo
  5. 0 1153 823 9969817 3 1084921564
  6. image
  7. 0 7453 3641 33544878 16 1085007515
  8. # End Of Table - usernames
复制代码


上面这个例子反应了三个用户的情况
例如:
quekehanmu是用户名(user)
8692是访问次数(hits)
5614是文件数目(files)
54422269是流量大小(flow)
现在要求对于每个用户都生成如下三个文件
假如还是对于quekehanmu这个用户来说
生成的文件为:
quekehanmu.hits 内容是8692
quekehanmu.files 内容是5614
quekehanmu.flow 内容是5442269

依此类推,

不知道我描述清楚没有,唉……嘴笨没有办法

论坛徽章:
0
2 [报告]
发表于 2004-05-23 01:14 |只看该作者

请教一个文本处理的问题

试试吧
eval 'sed -n '/usernames/,/usernames/p' infile |nawk '$0!~/usernames/{if(NF==1){name=$0;next;}printf("echo %s >%s.hits;echo %s >%s.file;echo %s >%s.flow;",$2,$2,$3,$3,$4,$4)}'

论坛徽章:
0
3 [报告]
发表于 2004-05-23 12:13 |只看该作者

请教一个文本处理的问题

#split

#! /usr/bin/awk -f
/usernames/
{
getline;
while($0 !~ /username/){
   name=$1;
   getline;
   print $2>name".hits"
   print $3>name".files"
   print $4>name".flow"
   getline;
}
}

awk -f split filename

论坛徽章:
0
4 [报告]
发表于 2004-05-24 09:53 |只看该作者

请教一个文本处理的问题

原帖由 "james_dlc" 发表:
试试吧
eval 'sed -n '/usernames/,/usernames/p' infile |nawk '$0!~/usernames/{if(NF==1){name=$0;next;}printf("echo %s >%s.hits;echo %s >%s.file;echo %s >%s.flow;",$2,$2,$3,$3,$4,$4)}'



谢谢!
nawk是sco上面的乜……

linux下面用awk的话要怎么改呢?

论坛徽章:
0
5 [报告]
发表于 2004-05-24 10:13 |只看该作者

请教一个文本处理的问题

原帖由 "随风漂" 发表:
#split

#! /usr/bin/awk -f
/usernames/
{
getline;
while($0 !~ /username/){
   name=$1;
   getline;
   print $2>name".hits"
   print $3>name".files"
   print $4>name".flow"
   ge..........



many more thanks

我用你这个脚本的时候,稍微有些不满足要求,单独使用这个脚本,它会把日志文件中除了usernames之间的行也输出到文件,可能是我题目没有描述怎么清楚,不过您的这个split已经帮我解决了大问题了,
所以把两位的回答稍微综合了一下

先对日志进行
sed -n '/usernames/,/usernames/p' 操作
把含有usernames之间的所有行定向到另外一个文本中
然后用您的这个split再处理这个文本,结果非常perfect

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP