免费注册 查看新帖 |

Chinaunix

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

[已解决]怎样取得所在行的位置? [复制链接]

论坛徽章:
0
发表于 2008-09-23 10:55 |显示全部楼层
文本中有一列数据, 我想取得指定范围内的数据的首行和最后一行的位置。 ( 第一个和最后一个符合条件的位置..)
例如 对以下数据 指定的范围是 1220317629 到 1220317631  应该返回的是  4 和 11
                        指定的范围是 1220317639 到 1220317650  应该返回的是  14 和 15
                        指定的范围是 1220317600 到 1220317629  应该返回的是  1 和 4
                        指定的范围是 1220317300 到 1220318000  应该返回的是  1 和 15


     
前提 指定范围和文本中的数据肯定有非空交集.,文本数值递增.


谢谢

1220317628
1220317628
1220317628
1220317629
1220317630
1220317630
1220317630
1220317630
1220317630
1220317631
1220317631
1220317632
1220317632
1220317639
1220317639

我小小的改了一下 避免理解上的不同..

[ 本帖最后由 testab 于 2008-9-26 09:11 编辑 ]

k.gz

10.5 KB, 下载次数: 36

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2008-09-23 11:05 |显示全部楼层
  1. awk -v b=1220317629 -v e=1220317631 '$1==b{a[0]=NR}$1==e{a[1]=NR}END{print a[0]?a[0]:0,a[1]?a[1]:NR}' urfile
复制代码

论坛徽章:
0
发表于 2008-09-23 11:09 |显示全部楼层
  1. awk '/1220317629/||/1220317631/{a[++i]=NR} END{print a[1],a[i]}'   file
复制代码

论坛徽章:
0
发表于 2008-09-23 11:11 |显示全部楼层
晕 一个都没看明白. 但十分感谢..我先试试


# awk -v b=1220317629 -v e=1220317631 '$1==b{a[0]=NR}$1==e{a[1]=NR}END{print a[0]?a[0]:0,a[1]?a[1]:NR}' k
15819 15915
# awk '/1220317629/||/1220317631/{a[++i]=NR} END{print a[1],a}' k
15774 15915

晕 两个答案

[ 本帖最后由 testab 于 2008-9-23 11:14 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
发表于 2008-09-23 11:19 |显示全部楼层
原帖由 testab 于 2008-9-23 11:11 发表
晕 一个都没看明白. 但十分感谢..我先试试


# awk -v b=1220317629 -v e=1220317631 '$1==b{a[0]=NR}$1==e{a[1]=NR}END{print a[0]?a[0]:0,a[1]?a[1]:NR}' k
15819 15915
# awk '/1220317629/||/12203176 ...


1220317629 这个有多个,我的代码是记录的最后一个;err7dd的是记录的第一个。

论坛徽章:
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
发表于 2008-09-23 11:23 |显示全部楼层
./linenumber.sh start end urfile

linenumber.sh  
  1. #!/bin/sh

  2. sed -n "/^$1$/,/^$2$/{/^$1$/=;/^$2$/=}"  $3
复制代码

$ ./bsh.sh 1220317629 1220317631 urfile
4
10

[ 本帖最后由 blackold 于 2008-9-23 11:27 编辑 ]

论坛徽章:
0
发表于 2008-09-23 11:25 |显示全部楼层
都是这么精炼的代码 看得我很神往..

论坛徽章:
0
发表于 2008-09-23 11:31 |显示全部楼层
低调低调 再低调..

[ 本帖最后由 testab 于 2008-9-23 13:25 编辑 ]

论坛徽章:
0
发表于 2008-09-23 13:46 |显示全部楼层
6楼的在楼主给的数据中显示正常,但如果我的文件内数据很大,好像就有些问题了

论坛徽章:
0
发表于 2008-09-23 15:19 |显示全部楼层
这有一个附件..用各位老大脚本。。。各有所得啊...

k.gz

10.5 KB, 下载次数: 24

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP