免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lightning
打印 上一主题 下一主题

[文本处理] 求一个思路,一个文件拆分后的思路 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-09-19 16:37 |只看该作者
>> 有两个值帮忙看看如何加入进去,第一个是hostname 想放在第一列,按照你写的感觉需要设定b[1]=$HO ...
jason680 发表于 2011-09-19 16:13



    太感谢了,写的详细,好理解,学习了

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
32 [报告]
发表于 2011-09-19 16:44 |只看该作者
太感谢了,写的详细,好理解,学习了
lightning 发表于 2011-09-19 16:37


问题解决了吗?...

解决了,别忘贴出来回溃大家...

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
33 [报告]
发表于 2011-09-19 16:49 |只看该作者
回复 31# lightning


    ok,这么多高手帮忙,楼主做个总结陈词吧。

论坛徽章:
0
34 [报告]
发表于 2011-09-19 16:56 |只看该作者
呃,我还在测试中,如果解决了,我就发总结性陈词,哈哈

论坛徽章:
0
35 [报告]
发表于 2011-09-19 16:57 |只看该作者
呃,我还在测试中,如果解决了,我就发总结性陈词,哈哈
lightning 发表于 2011-09-19 16:56



    主要是我要让这个语句要能在solaris 使用所以可能需要修改一下,不过备份方案应该解决了,在linux中运行正常

论坛徽章:
0
36 [报告]
发表于 2011-09-19 17:08 |只看该作者
问题解决了吗?...

解决了,别忘贴出来回溃大家...
jason680 发表于 2011-09-19 16:44



    hi, 之前提到的returns 值 如何处理? 错误和正确时候 returns 值还处在不同的列上

RETURNS=`echo $line3 | grep fails | awk '{print $8}'`
RETURNS=`echo $line3 | grep returns | awk '{print $9}'`   原来我是这么提取的

return值 没有等号 所以只是直接提取 returns 这个单词后面的 那一列 , 会有 200 和 401 等等返回值得区别,这个如何解决?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
37 [报告]
发表于 2011-09-19 17:25 |只看该作者
本帖最后由 jason680 于 2011-09-19 17:29 编辑
主要是我要让这个语句要能在solaris 使用所以可能需要修改一下,不过备份方案应该解决了,在linu ...
lightning 发表于 2011-09-19 16:57



嗯!!! 我放弃了....solaris就不用awk了...
改Perl这样Linux/solaris都可用...

$ cat get_log.pl
  1. use strict;
  2. use warnings;

  3. my %hKey=(
  4. "hostname" =>  0,
  5. "time"     =>  1,
  6. "action"   =>  2,
  7. #自己设...
  8. #键太多了自己设...  "键名" => 键位,  
  9. "returns"  => 44,
  10. );
  11. my $sItems = 50;   #$sItem=多少个键

  12. foreach(<>){
  13.   chomp;
  14.   my %hOut=();

  15.   my @aData = split/[;\s=\[\]&]+/;
  16.   $hOut{0} = $ENV{"HOSTNAME"} || "";  # 环境变量$HOSTNAME
  17.   $hOut{1} = join(" ",@aData[1,2,3]);

  18.   while($_=shift @aData){
  19.     if(exists $hKey{$_}){
  20.       $hOut{$hKey{$_}} = shift @aData;
  21.     }
  22.   }
  23.   for(0..50){
  24.     print exists $hOut{$_}?"$hOut{$_},":",";
  25.   }
  26.   print "\n";
  27. }
复制代码
$ perl  get_log.pl log1 log3
,15/09/2011 01:28:38:613 CST,userAuth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,15/09/2011 01:28:39:694 CST,userAuth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,15/09/2011 22:42:55:654 CST,getMsg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,1000074117,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,401,,,,,,,
,999827776,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,999827776,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,200,,,,,,,

#returns设对就会有键值200,401...

$ uname -s -r
SunOS 5.10

论坛徽章:
0
38 [报告]
发表于 2011-09-19 17:39 |只看该作者
嗯!!! 我放弃了....solaris就不用awk了...
改Perl这样Linux/solaris都可用...

$ cat get_log.pl$ ...
jason680 发表于 2011-09-19 17:25



    perl 我不懂,悲剧了,一点都不懂


,15/09/2011 00:14:56:754 CST,userAuth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,15/09/2011 00:14:57:180 CST,getFile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,1000052086,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,1000052086,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,200,,,,,,,
,1000052091,msgPkgDeleteACK,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,15/09/2011 00:15:04:009 CST,getItemList,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

结果这样,悲剧吖
awk 没有办法解决 returns 的问题吗?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
39 [报告]
发表于 2011-09-19 17:42 |只看该作者
perl 我不懂,悲剧了,一点都不懂


,15/09/2011 00:14:56:754 CST,userAuth,,,,,,,,,,,,,,, ...
lightning 发表于 2011-09-19 17:39



returns一直都没问题....for Linux
$ awk -F'[]=; &[]+' 'BEGIN{t=50;a["action"]=2;a["AppId"]=3;a["appID"]=4;a["AP"]=14;a["returns"]=44}{delete b;b[1]=$2" "$3" "$4;for(n=1;n++<tif(a[$n]!=""b[a[$n]]=$(n+1);for(n=0;n++<tprintf b[n]",";print""}' log1 log3
15/09/2011 01:28:38:613 CST,userAuth,,,,,,,,,,,,3.1.5.167,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
15/09/2011 01:28:39:694 CST,userAuth,,,,,,,,,,,,3.1.5.145,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
15/09/2011 22:42:55:654 CST,getMsg,,,,,,,,,,,,3.1.5.145,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
15/09/2011 06:27:23:811 CST,msgPkgDeleteACK,,12831713,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,401,,,,,,,
15/09/2011 06:27:24:708 CST,msgPkgDeleteACK,,13066620,,,,,,,,,,3.1.5.186,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
15/09/2011 06:27:25:862 CST,msgPkgDeleteACK,,13066620,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,200,,,,,,,

论坛徽章:
0
40 [报告]
发表于 2011-09-19 17:51 |只看该作者
returns一直都没问题....for Linux
$ awk -F'[]=; &[]+' 'BEGIN{t=50;a["action"]=2;a["AppId"]=3;a ...
jason680 发表于 2011-09-19 17:42



    呃,我要向 你抱歉, 我把returns 大写了,造成了这个错误,那么现在就差移植到是solaris 了,再次感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP