免费注册 查看新帖 |

Chinaunix

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

[文本处理] awk或sed 如何获取匹配内容的相关信息 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-06-05 13:50 |只看该作者 |倒序浏览
本帖最后由 ncist2011 于 2015-06-05 13:54 编辑

old.txt文件内容为

TARGET NAME                                                  STATE    SESSIONS
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367 online   0        
        alias:                  -
        auth:                   none
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               default
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2 online   0        
        alias:                  -
        auth:                   none
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               werew = 3,ggg = 2   ###########这里可能有多个,需要提取出来,逗号隔开


如果tpg-tags后面为default,则只获取信息:
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367      

如果tpg-tags后面不为default ,则获取信息:
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2      werew,ggg

将上述信息导入新的文件 new.txt中

论坛徽章:
0
2 [报告]
发表于 2015-06-05 14:04 |只看该作者
本帖最后由 liuyu85 于 2015-06-05 14:07 编辑
  1. awk -F'[, =]+' '/online/{a=$1}/tpg-tags:/&&/default/{print a}/tpg-tags/&&!/default/{for(i=3;i<=NF;i+=2)a=a""(i==3?" ":",")""$i;print a}'
复制代码

论坛徽章:
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
3 [报告]
发表于 2015-06-05 14:15 |只看该作者
  1. # sed -nr '/^iqn/{s/\s.*//;h};/tpg-tags/{/default/{g;p;b};s/.*:\s*//;s/\s*=[^,]*//g;G;s/(.*)\n(.*)/\2 \1/p}' i
  2. iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
  3. iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2 werew,ggg
复制代码

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
4 [报告]
发表于 2015-06-05 14:19 |只看该作者
  1. awk '/online/{p=$1}/tpg-tags/{if($NF=="default")print p ;else {$1="";gsub(/ =\s+[0-9]+/,"");print p,$0}}'

  2. iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
  3. iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2  werew,ggg
复制代码

论坛徽章:
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
5 [报告]
发表于 2015-06-05 14:35 |只看该作者
  1. awk '$1~/^iqn/{s=$1}$1~/^tpg-tags/{if($NF=="default")print s;else {$1="";print s""gensub(/ *= */,"","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
6 [报告]
发表于 2015-06-05 14:35 |只看该作者
  1. awk '$1~/^iqn/{s=$1}$1~/^tpg-tags/{if($NF=="default")print s;else {$1="";print s""gensub(/ *= */,"","g")}}' file
复制代码

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
7 [报告]
发表于 2015-06-06 01:35 |只看该作者
回复 1# ncist2011
  1. $sed -nr '/^iqn/{:1;$!N;/tpg-tags/!b1;s#(iqn[^ ]*) .*default$#\1#p;t;s#(iqn[^ ]*) .*tpg-tags:  +(.*)#\1 \2#;s# = [0-9]+##gp}' file
  2. iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
  3. iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2 werew,ggg
复制代码

论坛徽章:
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
8 [报告]
发表于 2015-06-06 08:46 |只看该作者
回复 1# ncist2011

$ cat FILE
TARGET NAME                                                  STATE    SESSIONS
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367 online   0        
        alias:                  -
        auth:                   none
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               default
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2 online   0        
        alias:                  -
        auth:                   none
        targetchapuser:         -
        targetchapsecret:       unset
        tpg-tags:               werew = 3,ggg = 2

$ awk '/ online /{w=$1}/tpg-tags:/{$1="";if($2=="default")$0="";else{gsub(/ *= *[^,]+/,"")};print w,$0}' FILE
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2
  werew,ggg
   

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
9 [报告]
发表于 2015-06-06 22:53 |只看该作者
  1. sed -nr '/iqn\./{s/^([^ ]+).*/\1/;h};/tpg-tags:/{/default/{g;p;d};/default/!{x;G;s/\n\s*.*://;s/= .//g;p}}'
复制代码
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2               werew ,ggg

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
10 [报告]
发表于 2015-06-07 23:29 |只看该作者
本帖最后由 zl624867243 于 2015-06-07 23:44 编辑

来个复杂的没楼上的简单
  1. egrep 'online|tpg-tags' old.txt | awk '{if (NR%2==0){print $0} else {printf"%s",$0}}' | awk '{w=$1}{if($NF=="default")print w;else {print w" "$5","$7}}'| awk -F',' '{if (NR%2==0){print $1","$3} else {print $0}}'
复制代码
iqn.2010-08.com.soul:02:49865255-1115-6158-d478-dd790c926367
iqn.2010-08.com.soul:02:c14c249a-d7da-ee68-80ad-970dbb0930c2 werew,ggg
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP