免费注册 查看新帖 |

Chinaunix

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

提取某行之前第一个满足条件的行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-30 23:29 |只看该作者 |倒序浏览
比如:
aa
bb
cc
aa
bb
cc
dd
ee

如何查找ee行号之前的第一个aa所在行的内容?

[ 本帖最后由 nicktasty 于 2009-7-31 00:10 编辑 ]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
2 [报告]
发表于 2009-07-30 23:46 |只看该作者
try:

脑子秀逗了,写了个错误的,删了……

awk也写了一个:

  1. awk '/aa/{a[NR]=$0}/ee/{x=NR}END{for(i ina)if(i<x&&i>y)y=i;print a[y]}' urfile
复制代码

[ 本帖最后由 Minsic 于 2009-7-31 00:33 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-07-30 23:56 |只看该作者
原帖由 Minsic 于 2009-7-30 23:46 发表
try:

tac urfile|sed -n '/aa/{p;q;}'


系统不认识tac这个命令

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
4 [报告]
发表于 2009-07-31 00:03 |只看该作者

回复 #3 nicktasty 的帖子

tac urfile部分可以用这个代替:

  1. awk '{a[NR]=$0}END{for(i=NR;i>=1;i--)print a[i]}' urfile
复制代码


或者这样:

  1. awk '{if(s)s=$0"\n"s;else s=$0}END{print s}' urfile
复制代码


这样先把文件倒过来,只不过这样整个处理就太罗嗦了

论坛徽章:
0
5 [报告]
发表于 2009-07-31 00:05 |只看该作者
awk '!v&&/aa/{v=$0}/ee/{print v;exit}' file

论坛徽章:
0
6 [报告]
发表于 2009-07-31 00:13 |只看该作者
呵呵,楼上大侠们,偶改了下需求,不是根据行内容(ee)来往上查找,而是根据ee的行号往上查找。
再帮忙改改吧:D

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
7 [报告]
发表于 2009-07-31 00:17 |只看该作者
看到5楼的代码,发现简单问题又被我复杂化了,再写一个 -_-

  1. awk '/aa/{s=$0}/ee/{print s;exit}' urfile
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
8 [报告]
发表于 2009-07-31 00:19 |只看该作者
原帖由 nicktasty 于 2009-7-31 00:13 发表
呵呵,楼上大侠们,偶改了下需求,不是根据行内容(ee)来往上查找,而是根据ee的行号往上查找。
再帮忙改改吧:D


难道要的不是文件第4行的那个aa吗?

论坛徽章:
0
9 [报告]
发表于 2009-07-31 00:22 |只看该作者

回复 #8 Minsic 的帖子

呵呵,是要第四行的aa,但不是根据ee来作为起始查找。
实际中我是知道ee所在行的行号,那如果根据这个行号来往上查找第一个aa呢?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
10 [报告]
发表于 2009-07-31 00:32 |只看该作者

回复 #9 nicktasty 的帖子

稍微改下就可以了啊

  1. awk '/aa/{a[NR]=$0}END{for(i in a)if(i<n&&i>y)y=i;print a[y]}' urfile
复制代码

  1. awk '/aa/{s=$0}NR==n{print s;exit}' urfile
复制代码


n是ee所在行的行号
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP