免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk 去掉某列最后一个字符 取指定某列方括号里面的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-10 09:50 |只看该作者 |倒序浏览
2014-11-05 09:39:48: ip[192.168.10.152] logId[281424076]
2014-11-05 09:58:33: ip[192.168.10.152] logId[393876725]
2014-11-05 09:58:33: ip[192.168.10.152] logId[393883438]
2014-11-05 09:58:34: ip[192.168.10.152] logId[394052520]
2014-11-05 09:58:34: ip[192.168.10.152] logId[394057519]

第2列去掉最后一个冒号, 第3列和第4列取方括号里面的内容

先感谢大家

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
2 [报告]
发表于 2014-11-10 09:53 |只看该作者
目测一下先~
  1. [root@localhost ~]# sed -r 's/://3;s/\S+\[([^]]+)\]/\1/g' i
  2. 2014-11-05 09:39:48 192.168.10.152 281424076
  3. 2014-11-05 09:58:33 192.168.10.152 393876725
  4. 2014-11-05 09:58:33 192.168.10.152 393883438
  5. 2014-11-05 09:58:34 192.168.10.152 394052520
  6. 2014-11-05 09:58:34 192.168.10.152 394057519
  7. [root@localhost ~]#
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2014-11-10 09:58 |只看该作者
本帖最后由 关阴月飞 于 2014-11-10 10:03 编辑
  1. awk -F '[] []+|: ' '{print $1,$2,$4,$6}'  urfile
  2. awk '{a=gensub(/:/,"",3,$2);split($3,b,"[][]");split($4,c,"[][]");print $1,a,b[2],c[2]}' urfile
复制代码

论坛徽章:
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
4 [报告]
发表于 2014-11-10 10:01 |只看该作者
本帖最后由 jason680 于 2014-11-10 10:25 编辑

回复 1# skypeleo

$ awk 'function v(s, r){r=s;if(match(s,/\[([^]]+)\]/,a))r=a[1];return(r)}{sub(/:$/,"",$2);$3=v($3);$4=v($4)}1' FILE
2014-11-05 09:39:48 192.168.10.152 281424076
2014-11-05 09:58:33 192.168.10.152 393876725
2014-11-05 09:58:33 192.168.10.152 393883438
2014-11-05 09:58:34 192.168.10.152 394052520
2014-11-05 09:58:34 192.168.10.152 394057519

   

论坛徽章:
0
5 [报告]
发表于 2014-11-10 10:18 |只看该作者
  谢谢大家  

论坛徽章:
0
6 [报告]
发表于 2014-11-10 10:38 |只看该作者
本帖最后由 tasteoftime_90 于 2014-11-10 10:38 编辑
  1. sed -r 's/: ..\[(.+)\] .+\[(.+)\]/ \1 \2/' file
复制代码
回复 1# skypeleo


   

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
7 [报告]
发表于 2014-11-10 11:33 |只看该作者
sed
  1. sed 's/: / /;s/ip\[\(.*\)\]/\1/;s/\].*\[/ /' test
复制代码
python
  1. #!/usr/bin/env python

  2. import re

  3. file = open('test')
  4. done = 0
  5. while not done:
  6.         line = file.readline()
  7.         if line != '':
  8.                 line = line.strip('\n')
  9.                 this_line_list = line.split(' ')
  10.                 zz1 = re.compile('[0-9]{2}:[0-9]{2}:[0-9]{2}')
  11.                 zz2 = re.compile('[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}')
  12.                 zz3 = re.compile('[0-9]{1,}')
  13.                 pp1 = re.findall(zz1,this_line_list[1])
  14.                 pp2 = re.findall(zz2,this_line_list[2])
  15.                 pp3 = re.findall(zz3,this_line_list[3])
  16.                 print '%s %s %s %s' % (this_line_list[0],pp1[0],pp2[0],pp3[0])
  17.         else:
  18.                 done = 1
  19. file.close()
复制代码

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
8 [报告]
发表于 2014-11-10 12:49 |只看该作者
回复 1# skypeleo
awk '{print gensub(/(: ip\[)|(ip\[)|(\] logId\[)|(\])/," ","G")}' FILE


   

论坛徽章:
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
9 [报告]
发表于 2014-11-10 19:01 |只看该作者
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-

  3. import fileinput, sys, re
  4. for line in fileinput.input(sys.argv[1]):
  5.     record = re.findall('(\d+-\d+-\d+).*?(\d+:\d+:\d+).*?\[(.*?)\].*?\[(.*?)\]',line)
  6.     print ' '.join(record[0])
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP