免费注册 查看新帖 |

Chinaunix

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

[数值计算] 找出缺少的行 [复制链接]

论坛徽章:
0
发表于 2014-09-17 23:55 |显示全部楼层
本帖最后由 心若寒江雪 于 2014-09-18 00:14 编辑

此问题有两种可能,现在列举出每种可能的一个特定的文本信息:

类型1
  1. 12 R1C1
  2. 12 R1C2
  3. 12 R1C3
  4. 12 R1C4
  5. 12 R2C1
  6. 12 R2C2
  7. 12 R2C3
  8. 12 R2C4
  9. 12 R3C1
  10. 12 R3C2
  11. 12 R3C4
复制代码
类型2
  1. 12 R1C1
  2. 12 R1C2
  3. 12 R1C3
  4. 12 R2C1
  5. 12 R2C2
  6. 12 R2C3
  7. 12 R2C4
  8. 12 R3C1
  9. 12 R3C2
  10. 12 R3C4
复制代码
问题描述:
数字12表示一共有12行
目的是找出缺少那一行
比如第一类就缺少了R3C3,而第二种则缺少了R1C4和R3C3

论坛徽章:
0
发表于 2014-09-18 00:07 |显示全部楼层
想到一个这样的思路,但是感觉有点费事,求大牛给出高大上解决方法
  1. for i in `seq 3`
  2. do
  3.     for i in `seq 4`
  4.     do
  5.          something
  6.     done
  7. done
复制代码

论坛徽章:
10
金牛座
日期:2014-09-16 19:02:48技术图书徽章
日期:2015-11-24 01:37:29操作系统版块每日发帖之星
日期:2015-11-18 06:20:002015年亚洲杯之沙特阿拉伯
日期:2015-04-13 17:33:462015年迎新春徽章
日期:2015-03-04 09:51:162015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2014-12-04 19:33:55白羊座
日期:2014-09-17 19:34:42巨蟹座
日期:2014-09-16 21:09:4815-16赛季CBA联赛之同曦
日期:2016-06-27 23:23:07
发表于 2014-09-18 02:04 |显示全部楼层
菜鸟路过,高大上没有。笨办法一个。学习shell,喜欢各种折腾,虽然有点牵强。凑合着交作业了。等大神出压缩版。
for i in `seq 1 3`
do
        for j in `seq 1 4`
        do
        a=R${i}C${j}
        echo "12 $a" >> work2
        sleep 1
        done
done
diff -u work work2





--- work        2014-09-18 00:12:33.670199660 +0800
+++ work2        2014-09-18 01:50:41.311853027 +0800
@@ -1,10 +1,12 @@
12 R1C1
12 R1C2
12 R1C3
+12 R1C4
12 R2C1
12 R2C2
12 R2C3
12 R2C4
12 R3C1
12 R3C2
+12 R3C3
12 R3C4

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
发表于 2014-09-18 03:17 |显示全部楼层
本帖最后由 reb00t 于 2014-09-18 03:31 编辑
  1. <?php

  2. $f = file('200.txt');
  3. foreach ($f as $k => $v) {
  4.   $arr = preg_split('/C/', trim($v));
  5.   $newarr[$arr[0]].=$arr[1];
  6. }
  7. foreach ($newarr as $kk => $vv) {
  8. for ($i=1; $i <=4 ; $i++) {
  9.         if(strpos("$vv", "$i")===false)
  10.                 echo  $kk."C".$i."\n";
  11. }

  12. }

  13. ?>
复制代码
已测试~
  1. awk -FC '{a[$1]=a[$1]?a[$1]$2:$2}END{for(i in a) for(n=1;n<=4;n++)if(!index(""a[i]"",""n"")) print i"C"n}' 4
复制代码
坐等awk精简代码!

论坛徽章:
54
15-16赛季CBA联赛之北京
日期:2019-01-25 10:16:38白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:532015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之大阪钢巴
日期:2015-06-25 17:30:042015亚冠之城南
日期:2015-06-25 15:10:58黄金圣斗士
日期:2015-12-02 11:44:3515-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56
发表于 2014-09-18 10:21 |显示全部楼层
文本是已经排好序了的么?

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2014-09-18 10:29 |显示全部楼层
  1. awk 'NR==1{idx=$1/4;for(i=1;i<=idx;i++)for(j=1;j<=4;j++)a["R"i"C"j]}{delete a[$2]}END{for(i in a)print i}' file
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
发表于 2014-09-18 10:33 |显示全部楼层
回复 5# reyleon


    其实不用问顺序或者乱序,自己在代码里解决。要么先排个序再处理,如果觉得比较戳的话,就在代码里自己适应。

论坛徽章:
467
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-09-18 10:35 |显示全部楼层
回复 1# 心若寒江雪
  1. awk 'BEGIN{for(i=1;i<=3;i++)for(j=1;j<=4;j++)a["R"i,"C"j]} {delete a[substr($2,1,2),substr($2,3)]} END{for(i in a)print i}' 1.txt
  2. R3C3

  3. awk 'BEGIN{for(i=1;i<=3;i++)for(j=1;j<=4;j++)a["R"i,"C"j]} {delete a[substr($2,1,2),substr($2,3)]} END{for(i in a)print i}' 2.txt
  4. R1C4
  5. R3C3
复制代码

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
发表于 2014-09-18 10:42 |显示全部楼层
本帖最后由 Kasiotao 于 2014-09-18 10:42 编辑

回复 1# 心若寒江雪
。。。写的不好轻拍
  1. awk -F'[RC]' '{r=int(i/4+1);c=i%4+1;if(r==$2&&c==$3)i++;else{print $1" R"r"C"c;i+=2}}' testfile
复制代码

论坛徽章:
54
15-16赛季CBA联赛之北京
日期:2019-01-25 10:16:38白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:532015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之大阪钢巴
日期:2015-06-25 17:30:042015亚冠之城南
日期:2015-06-25 15:10:58黄金圣斗士
日期:2015-12-02 11:44:3515-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56
发表于 2014-09-18 10:49 |显示全部楼层
本帖最后由 reyleon 于 2014-09-18 11:27 编辑
  1. awk '{k=substr($2,1,3);a[$1 FS k];b[$1 FS $2]}END{for(i in a)for(j=0;j++<4;)if(!(i""j in b))print i""j}'
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP