免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 17608 | 回复: 23

[文本处理] awk怎么提取某一关键词后的内容 [复制链接]

论坛徽章:
0
发表于 2014-12-22 14:22 |显示全部楼层
求救

文件举例 A D W 2 - . C ID=XX;L=11;Name=BB . V
            C N W 4 - . T ID=YY;L=23;Name=FF - T
            .......

如果每一行我只想提取Name=后的字母,得到:
BB
FF
...

awk该怎么实现呢?求大神指教!

论坛徽章:
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
发表于 2014-12-22 14:30 |显示全部楼层
回复 1# xunong
  1. awk -F '[Name= ]+' '{print $(NF-2)}' file
复制代码

论坛徽章:
0
发表于 2014-12-22 14:45 |显示全部楼层
回复 2# zxy877298415

提取出来不对诶
实际我的文件是这样的,有点乱哈,我需要提取Name=后的名字
hsa-mir-6723
hsa-miR-6723-5p

第一行:chr1    632324  632413  chr1    .       miRNA_primary_transcript        632325  632413  .       -       .       ID=MI0022558;Alias=MI0022558;Name=hsa-mir-6723
第二行:chr1    632381  632403  chr1    .       miRNA   632382  632403  .       -       .       ID=MIMAT0025855;Alias=MIMAT0025855;Name=hsa-miR-6723-5p;Derives_from=MI0022558


有的行Name=XX后还有;号 有的行就没有,不知道awk提取时跟这个有关系没
   

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
发表于 2014-12-22 15:00 |显示全部楼层
回复 3# xunong


     一共有几种不同的情况?

论坛徽章:
0
发表于 2014-12-22 15:01 |显示全部楼层
  1. awk '{if(match($0,".*Name=([^; ]*)",a))print a[1]}' ufile
复制代码

论坛徽章:
0
发表于 2014-12-22 15:06 |显示全部楼层
回复 4# lkk_super

就这两种情况、、、

   

论坛徽章:
0
发表于 2014-12-22 15:07 |显示全部楼层
回复 5# zerostudy


    谢谢!

   这个没有问题,都提出来了!

论坛徽章:
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
发表于 2014-12-22 15:08 |显示全部楼层
这个我觉着应该用 grep 的干活

论坛徽章:
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
发表于 2014-12-22 15:10 |显示全部楼层
回复 3# xunong
  1. sed -r 's/(.*Name=)([^; ]+)(.*)/\2/g' file
复制代码

论坛徽章:
7
申猴
日期:2014-12-21 13:57:24巳蛇
日期:2014-12-25 22:27:08申猴
日期:2015-01-19 08:07:36辰龙
日期:2015-02-04 11:40:06处女座
日期:2015-02-04 11:40:412015年亚洲杯之卡塔尔
日期:2015-03-06 12:01:322015年亚洲杯之乌兹别克斯坦
日期:2015-03-31 13:43:57
发表于 2014-12-22 15:54 |显示全部楼层
  1. cat data.txt | awk 'BEGIN{FS="Name="}{print $2}' | awk '{print $1}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP