免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: nicktasty
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2009-07-31 00:41 |只看该作者
原帖由 Minsic 于 2009-7-31 00:32 发表
稍微改下就可以了啊

awk '/aa/{a[NR]=$0}END{for(i in a)if(iy)y=i;print a[y]}' urfile

awk '/aa/{s=$0}NR==n{print s;exit}' urfile

n是ee所在行的行号


太棒了,谢谢天使!!! :)

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

回复 #11 nicktasty 的帖子

其实还是和9楼的第二个思路是一样的,多亏了5楼提醒才没再往复杂的想

写了个sed的:

  1. sed -n '/aa/h;n{x;p;q;}' urfile
复制代码


n仍旧是ee所在行号

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

回复 #12 Minsic 的帖子

牛的,也不错!

论坛徽章:
0
14 [报告]
发表于 2009-07-31 01:03 |只看该作者
awk '/aa/{s=$0}NR==n{print s;exit}' urfile
麻烦稍微解释一下,怎么实现往上查找的呢? 如果是往下查找呢?

论坛徽章:
0
15 [报告]
发表于 2009-07-31 01:55 |只看该作者

回复 #14 nicktasty 的帖子

NR==n其实直接换成/ee/就行了。
存储变量记录“截至目前”最后一个/aa/行的内容,在/ee/行输出该变量,就是ee前面的aa行了。

往下:

  1. sed -n '/ee/,/aa/{/aa/{p;Q}}' URFILE
复制代码

论坛徽章:
0
16 [报告]
发表于 2009-07-31 07:33 |只看该作者
如何查找ee行号之前的第一个aa所在行的内容?

为什么我的理解结果应该是第1行的aa呢?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
17 [报告]
发表于 2009-07-31 08:49 |只看该作者
  1. sed '/aa/h;/ee/{g;q};d' urfile
复制代码

论坛徽章:
0
18 [报告]
发表于 2009-07-31 09:05 |只看该作者

  1. cat a.txt
  2. aa
  3. bb
  4. cc
  5. aa
  6. bb
  7. cc
  8. dd
  9. ee
  10. aa
复制代码

  1. awk '$1=="aa"{print NR,$0};/ee/{exit;}' a.txt
  2. 1 aa
  3. 4 aa
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP