免费注册 查看新帖 |

Chinaunix

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

如何提取同一文件的最新版号? [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
11 [报告]
发表于 2009-08-17 23:20 |只看该作者
如果结果需要排序,最后再加个管道送sort:

  1. awk 'BEGIN{FS="."}{if($2"."$3>max[$1])max[$1]=$2"."$3}END{for(i in max)print i"."max[i]}' urfile
复制代码

论坛徽章:
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
12 [报告]
发表于 2009-08-17 23:24 |只看该作者

回复 #10 kszz0402940 的帖子

有现成的方法干吗不用?

你的文件名是保存在文件里面还是通过命令列出来?也不知道你的文件名有什么规律。
  1. ls -1rv|sort -t . -uk 1,1
复制代码

论坛徽章:
0
13 [报告]
发表于 2009-08-17 23:25 |只看该作者
原帖由 blackold 于 2009-8-17 23:12 发表
文件名都只有两个字符
sort -t / -k 5.1,5.3  -k 5.4rn urfile|sort -t / -uk 5.1,5.3


能说下这样实现的想法么?(解释一下,谢谢 )
如果路径不一定都是固定的级数,又怎么实现呢?

论坛徽章:
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
14 [报告]
发表于 2009-08-17 23:26 |只看该作者

回复 #13 kszz0402940 的帖子

就是sort命令,排序,然后取第一个。
看文件名规律而定。

论坛徽章:
0
15 [报告]
发表于 2009-08-17 23:28 |只看该作者

回复 #12 blackold 的帖子

文件名是通过命令然后重定向到文件里的,
文件名和文件的路径都没有任何规律的

论坛徽章:
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
16 [报告]
发表于 2009-08-17 23:30 |只看该作者

回复 #15 kszz0402940 的帖子

12楼的命令行不行?

论坛徽章:
0
17 [报告]
发表于 2009-08-17 23:31 |只看该作者
原帖由 Minsic 于 2009-8-17 23:20 发表
如果结果需要排序,最后再加个管道送sort:

awk 'BEGIN{FS="."}{if($2"."$3>max[$1])max[$1]=$2"."$3}END{for(i in max)print i"."max}' urfile


if($2"."$3>max[$1])max[$1]=$2"."$3}

恩,谢谢,这样也可以。这里的max[$1]是什么值啊?

论坛徽章:
0
18 [报告]
发表于 2009-08-17 23:32 |只看该作者
原帖由 blackold 于 2009-8-17 23:30 发表
12楼的命令行不行?



这个命令不行,我加了级个记录就不行了。。。

论坛徽章:
0
19 [报告]
发表于 2009-08-17 23:35 |只看该作者
sort cvs.txt | gawk 'BEGIN{FS="."}{newline=$1; a[NR]=$0; if(newline!=oldline) { print a[NR-1]; oldline=newline}}END{print a[NR]}'


sort cvs.txt  排序,同一个文件排在一起,并且版本号由小到大。

用.作为FS,那么.号之前的显然是文件名。
用oldline存储旧文件名,用newline存储新文件名,如果 newline!=oldline  证明到了一个新文件,那么新文件之前的就是版本号最大的旧文件。

论坛徽章:
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
20 [报告]
发表于 2009-08-17 23:37 |只看该作者
最好给出典型的数据。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP