免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell命令优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-21 20:09 |只看该作者 |倒序浏览
本帖最后由 sihouzhao 于 2014-07-22 09:51 编辑

处理前
  1. 61.165.255.92 - - [28/Jun/2014:09:00:00 +0800] "GET http://download.****.com/url/Hh_40.png HTTP/1.1" 200 88025 "-" "Dalvik/1.6.0 (Linux; U; Android 4.3; GT-I9500 Build/JSS15J)" TCP_REFRESH_UNMODIFIED:FIRST_UP_PARENT download.****.com
复制代码
处理后

  1. 省    市   供应商   大小
  2. 广东 惠州 电信 55532
复制代码
我自己写的
  1. head -10000 flog.log | awk '{print $1,$10}'  | nali | awk -F '[[ ]' '{if(match($2,/省/)>0){if(substr($2,match($2,/省/)+1,2)){print  substr($2,0,2),substr($2,match($2,/省/)+1,2),$3,$4}else{print substr($2,0,2),substr($2,0,2),$3,$4}}else{print substr($2,0,2),substr($2,0,2),$3,$4}}' |  awk '{if(NF<4){print $1,$2" 其他 "$3}else{if($3~/电信/){print  $1,$2" 电信 "$NF}else if($3~/铁通/){print $1,$2" 铁通 "$NF}else if($3~/联通/){print  $1,$2" 联通 "$NF}else if($3~/网通/){print $1,$2" 网通 "$NF}else if($3~/移动/){print $1,$2" 移动 "$NF}else{print $1,$2" 其他 "$NF}}}' > b.txt
复制代码
能达到效果 ,就是效率 差的我 不忍直视,各位大牛看能不能给改下。,或者 介绍个别的方法。小弟 道术不精,莫嘲讽

处理前的文本其实 是 日志 ,像 apache什么的 。日志 根据 空格截取,其中 $1是  ip $10是访问大小 ,我先 awk取出 $1和 $10然后 用 nali命令 获取ip归属地 ,然后的到
  1. 180.213.33.16[天津市 电信] 167
复制代码
处理后我要得到

  1. 省    市  供应商 大小
  2. 天津 天津 电信 167
复制代码
我上边自己写的能达到效果 就是处理上万 条太差,各位大牛看能不能给改下。,或者 介绍个别的方法。小弟 道术不精,莫嘲讽

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2014-07-21 21:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
3 [报告]
发表于 2014-07-21 23:09 |只看该作者

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [报告]
发表于 2014-07-22 00:06 |只看该作者
回复 1# sihouzhao

资质有限,从代码逆推需求对我太难。
楼主能科普下从这个文本
  1. 01.61.165.255.92 - - [28/Jun/2014:09:00:00 +0800] "GET http://download.****.com/url/Hh_40.png HTTP/1.1" 200 88025 "-" "Dalvik/1.6.0 (Linux; U; Android 4.3; GT-I9500 Build/JSS15J)" TCP_REFRESH_UNMODIFIED:FIRST_UP_PARENT download.****.com
复制代码
计算对应的省 市 供应商 大小的算法吗?
   

论坛徽章:
0
5 [报告]
发表于 2014-07-23 19:06 |只看该作者
回复 4# Herowinter

添加了点信息。 帮我看下 。。


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
6 [报告]
发表于 2014-07-23 19:21 |只看该作者
回复 5# sihouzhao

我在家里,明天有空帮你看吧,但我电脑应该没装nali,
还有由天津市得到天津省这个是查什么的?
   

论坛徽章:
0
7 [报告]
发表于 2014-07-24 18:44 |只看该作者
回复 6# Herowinter
由省 能得到 每个省的 量 ,还可以 精确到 某个市的量


   

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
8 [报告]
发表于 2014-07-24 19:46 |只看该作者
本帖最后由 Herowinter 于 2014-07-24 19:47 编辑

回复 7# sihouzhao

没有nali,表示无法尝试,如果楼主能提供个执行到这个步骤的
中间结果文件表示可能还可以看一下。
head -10000 flog.log | awk '{print $1,$10}'  | nali

论坛徽章:
0
9 [报告]
发表于 2014-07-29 16:25 |只看该作者
回复 8# Herowinter

用 nali处理 后 大致 就是 ip+归属地 +访问 大小,就像这样
  1. 123.195.159.188[台湾省台北市 亚太电信集团公司] 93465
复制代码
我就像 得到
  1. 台湾 台北  电信    93465
复制代码

论坛徽章:
769
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
10 [报告]
发表于 2014-07-29 19:19 |只看该作者
回复 9# sihouzhao
不好意思,我可能最近一段时间都没环境写代码了,帮你顶上去吧,
有nali的结果得到你想要的不是很难,肯定有人帮你做的。

把"xx省xx市"这个字符串分成两个,然后查找一下后面的字符串里是
包含“移动”、“联通”、“电信”中的哪一个。
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP