免费注册 查看新帖 |

Chinaunix

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

重复数字之间距离 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-08-23 23:29 |只看该作者
  1. #!/bin/awk -f
  2. {temp=$1;
  3.   num=NR;
  4.   for(i in a)
  5.     if(a[i]==temp){
  6.        str=num-i-1;
  7.        delete a[i];
  8.        result[temp]=result[temp]" "str;
  9.     }
  10.        a[num]=$1;
  11. }

  12. END{for(i in result)
  13.        print i,result[i];
  14.     }
复制代码

论坛徽章:
0
12 [报告]
发表于 2010-08-23 23:47 |只看该作者
我也换个思路写一个
  1. awk 'a[$1]++{r[$1]=r[$1]" "NR-n[$1]-1}{n[$1]=NR}END{for (i in r) printf i": "r[i]"\n"}' file
复制代码

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-02-10 06:20:01IT运维版块每日发帖之星
日期:2016-02-11 06:20:00
13 [报告]
发表于 2010-08-24 02:03 |只看该作者

  1. awk '{a[$0]++;if(a[$0]>1){for(i=NR;i>=1;i--){if(b[i]==$0){break}};print $0,NR-i-1};b[NR]=$0}' aaa

复制代码

论坛徽章:
0
14 [报告]
发表于 2010-08-24 09:04 |只看该作者
回复 6# blackold


    黑哥说话总是透着

论坛徽章:
0
15 [报告]
发表于 2010-08-24 09:05 |只看该作者
本帖最后由 ashlv 于 2010-08-24 09:28 编辑

  1. cat file01 |sed "s# ##g"| awk '/./{printf $1" "}'|sed "s#121#x#g"|sed "s#^[^x]\+##g"|sed "s# [^x ]\+#y#g"|sed "s# x.\+##g"|awk '{printf $0}'|wc|awk '{printf $3}'
复制代码
投机倒把

论坛徽章:
0
16 [报告]
发表于 2010-08-24 09:20 |只看该作者
我也来个
  1. awk '$1 in arr{print $1,NR-arr[$1]-1}{arr[$1]=NR}' file
复制代码

论坛徽章:
0
17 [报告]
发表于 2010-08-24 10:06 |只看该作者
回复 9# ywlscpl


    学习了

论坛徽章:
0
18 [报告]
发表于 2010-08-24 10:39 |只看该作者
有使用 sed 搞定的不 , 想不下去了
  1. centos1 ~ # sed '=' c | sed -n 'N ;s/\n/ / ; /121/p'
  2. 1 121
  3. 7 121
  4. 12 121
  5. 15 121
复制代码

论坛徽章:
0
19 [报告]
发表于 2010-08-24 11:33 |只看该作者
  1. #! /usr/bin/perl
  2. my %h;
  3. while(<>) {
  4.         chomp;
  5.         if (exists $h{$_}) {
  6.                 $h{$_} =~ s/(\d+)$/$.-1-$1.' '.$./e;
  7.         } else {
  8.                 $h{$_} = ' ' . $.;
  9.         }
  10. }
  11. while(($k , $v) = each %h) {
  12.         $v =~ s/ \d+$//;
  13.         print "$k => $v\n" if $v;
  14. }
复制代码

论坛徽章:
0
20 [报告]
发表于 2010-08-24 11:43 |只看该作者
多谢大家给出这么多解决方法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP