免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed提取指定行前面第5行的内容~ [复制链接]

论坛徽章:
1
技术图书徽章
日期:2013-09-25 21:06:29
发表于 2013-08-15 09:25 |显示全部楼层
工作当中遇到一个问题,  有很多的文本,大概一个小时一个,要提取里面的一个数据, 这个数据在<huaxing> 这一行的前面第5行,刚刚我尝试用awk是可以提取出来的, 但是sed死活都弄不出来, 请看官们帮忙看看的~
如下文件:

2013081507.txt

.....
754
x
eqio
lda
lgiqo
<huaxing>
......
要提取754这个值~~

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
发表于 2013-08-15 09:43 |显示全部楼层
本帖最后由 代号:军刀 于 2013-08-15 09:45 编辑
  1. sed -r ':1;N;/<huaxing>/!b1;s/.*\n([^\n]+)((\n[^\n]+){5})/\1/'
复制代码

论坛徽章:
0
发表于 2013-08-15 09:55 |显示全部楼层
回复 2# 代号:军刀


    这样会把754前面的数据同时取出来吧

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
发表于 2013-08-15 09:56 |显示全部楼层
  1. sed -nr 'H;/<huaxing>/{x;s///;s/.*\n(.*)(.*\n){5}/\1/p}' file
  2. 754
复制代码

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
发表于 2013-08-15 10:28 |显示全部楼层
回复 3# 心乃南部之星

    不是把754之前的行取出来,是会多打印huaxing后面的行
  1. sed -nr ':1;N;/<huaxing>/!b1;s/.*\n([^\n]+)((\n[^\n]+){5})/\1/p'
复制代码

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
发表于 2013-08-15 11:22 |显示全部楼层
grep效率比sed高

论坛徽章:
0
发表于 2013-08-15 11:32 |显示全部楼层
回复 4# WilliBhamlll


   请问代码里 s/// 这句的作用是什么

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
发表于 2013-08-15 11:34 |显示全部楼层
回复 7# 心乃南部之星


    就是把<huaxing>替换为空

论坛徽章:
0
发表于 2013-08-15 14:40 |显示全部楼层
回复 8# 代号:军刀


    我就是不明白s/// 怎么会把<huaxing>替换为空,还请解释下

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
发表于 2013-08-15 16:05 |显示全部楼层
回复 9# 心乃南部之星


    [address]s/pattern/replacement/flags
    替换命令应用于与address匹配的行。如果没有指定地址,那么就应用于Pattern匹配的行。如果正则表达式作为地址来提供,并且没有指定模式,那么替换命令匹配由地址匹配的内容。     --出处:sed & awk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP