免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7031 | 回复: 11
打印 上一主题 下一主题

[文本处理] 求助:如果某行第$4+$5>100,则删除第一列相同的所有行,怎么做? [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-10-08 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-10 03:17 |只看该作者 |倒序浏览
例子:
gi|270140093|gb|BT107045.1|     23      +       18      2       CG      CGG
gi|270140093|gb|BT107045.1|     39      +       8       54      CHH     CAA
gi|270140093|gb|BT107045.1|     53      +       0       86      CHH     CCT
gi|270140093|gb|BT107045.1|     54      +       1       86      CHH     CTT
gi|270140093|gb|BT107045.1|     58      +       12      78      CHH     CAA
gi|270140093|gb|BT107045.1|     76      +       84      23      CG      CGG
gi|270140093|gb|BT107045.1|     90      +       2       111     CHH     CCT
gi|270140093|gb|BT107045.1|     136     +       0       96      CHH     CTC
gi|270140093|gb|BT107045.1|     138     +       1       87      CHH     CTT
gi|270140093|gb|BT107045.1|     147     +       2       95      CHH     CAT
gi|270140093|gb|BT107045.1|     169     +       156     60      CHH     CAA
gi|270140093|gb|BT107045.1|     183     +       3       262     CHH     CCC
gi|270140093|gb|BT107045.1|     184     +       3       266     CHH     CCT
gi|270140093|gb|BT107045.1|     185     +       7       266     CHH     CTA
gi|270140093|gb|BT107045.1|     189     +       5       268     CHH     CTT
gi|270140093|gb|BT107045.1|     206     +       245     76      CHG     CAG
gi|270140093|gb|BT107045.1|     211     +       227     103     CG      CGC
gi|270143879|gb|BT110831.1|     1174    +       0       2       CHH     CAC
gi|270143879|gb|BT110831.1|     1176    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1185    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1188    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1204    +       0       2       CHH     CTC
gi|270143879|gb|BT110831.1|     1206    +       0       2       CHH     CCT
gi|270143879|gb|BT110831.1|     1207    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1216    +       0       2       CG      CGG
gi|270143879|gb|BT110831.1|     1228    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1234    +       0       2       CHH     CTT
gi|270143879|gb|BT110831.1|     1239    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1244    +       2       0       CHG     CAG
gi|270143879|gb|BT110831.1|     1254    +       2       0       CG      CGC
gi|270143879|gb|BT110831.1|     1256    +       0       2       CHH     CCA

Output:

gi|270143879|gb|BT110831.1|     1174    +       0       2       CHH     CAC
gi|270143879|gb|BT110831.1|     1176    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1185    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1188    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1204    +       0       2       CHH     CTC
gi|270143879|gb|BT110831.1|     1206    +       0       2       CHH     CCT
gi|270143879|gb|BT110831.1|     1207    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1216    +       0       2       CG      CGG
gi|270143879|gb|BT110831.1|     1228    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1234    +       0       2       CHH     CTT
gi|270143879|gb|BT110831.1|     1239    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1244    +       2       0       CHG     CAG
gi|270143879|gb|BT110831.1|     1254    +       2       0       CG      CGC
gi|270143879|gb|BT110831.1|     1256    +       0       2       CHH     CCA

谢谢各位大牛帮忙,鞠躬了~~

论坛徽章:
0
2 [报告]
发表于 2013-08-10 08:26 |只看该作者
  1. awk '
  2. {
  3.     if($4+$5>100){
  4.         deleteColumn[$1] = $1
  5.     }
  6.     if(FNR!=NR&&$1!=deleteColumn[$1]){
  7.        print $0
  8.     }
  9. }
  10. ' targetFile targetFile
复制代码

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
3 [报告]
发表于 2013-08-10 08:29 |只看该作者
  1. awk 'NR==FNR{if($4+$5>100)a[$1];next}!($1 in a)' file file
  2. gi|270143879|gb|BT110831.1|     1174    +       0       2       CHH     CAC
  3. gi|270143879|gb|BT110831.1|     1176    +       0       2       CHH     CAT
  4. gi|270143879|gb|BT110831.1|     1185    +       0       2       CHG     CAG
  5. gi|270143879|gb|BT110831.1|     1188    +       0       2       CHG     CAG
  6. gi|270143879|gb|BT110831.1|     1204    +       0       2       CHH     CTC
  7. gi|270143879|gb|BT110831.1|     1206    +       0       2       CHH     CCT
  8. gi|270143879|gb|BT110831.1|     1207    +       2       0       CHG     CTG
  9. gi|270143879|gb|BT110831.1|     1216    +       0       2       CG      CGG
  10. gi|270143879|gb|BT110831.1|     1228    +       2       0       CHG     CTG
  11. gi|270143879|gb|BT110831.1|     1234    +       0       2       CHH     CTT
  12. gi|270143879|gb|BT110831.1|     1239    +       0       2       CHH     CAT
  13. gi|270143879|gb|BT110831.1|     1244    +       2       0       CHG     CAG
  14. gi|270143879|gb|BT110831.1|     1254    +       2       0       CG      CGC
  15. gi|270143879|gb|BT110831.1|     1256    +       0       2       CHH     CCA
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-08-10 09:17 |只看该作者
awk一直比较菜,看到不顺眼的,球大牛给学习的机会
  1. {if($4+$5>100){
  2.                 a[NR]=$1
  3.         }
  4. else{
  5.                 b[NR]=$1
  6.                 c[NR]=$0
  7.         }

  8. for(goodnr in b){
  9.         for(badnr in a){
  10.                 if(b[goodnr] == a[badnr]){
  11.                         delete c[goodnr]
  12.                         }       
  13.                 }
  14.         }
  15. }
  16. END{
  17.         for(printnr in c)
  18.                 print c[printnr]
  19.         }       
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
5 [报告]
发表于 2013-08-10 10:47 |只看该作者
本帖最后由 关阴月飞 于 2013-08-10 11:12 编辑

回复 1# 56836430

  1. awk '{a[NR,$1]=$0;b[$1];if($4+$5>100)c[$1]}END{for(i in c)delete b[i];for(;n++<NR;)for(i in b)if(a[n,i])print a[n,i]}' file

复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
6 [报告]
发表于 2013-08-10 12:37 |只看该作者
  1. awk '{c[NR]=$1;a[NR,""]=$0;if($4+$5>100)b[$1]++}END{for(;n++<NR;)if(A=a[n,b[c[n]]])print A}' file
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-08-10 17:45 |只看该作者
{
   if( $4 + $5 > 100 )
   {
      a[$1]=$1
      next
   }
   if( !($1 in a)  )
   {
      print
   }
}
我这么写的结果是:

gi|270140093|gb|BT107045.1|     23      +       18      2       CG      CGG
gi|270140093|gb|BT107045.1|     39      +       8       54      CHH     CAA
gi|270140093|gb|BT107045.1|     53      +       0       86      CHH     CCT
gi|270140093|gb|BT107045.1|     54      +       1       86      CHH     CTT
gi|270140093|gb|BT107045.1|     58      +       12      78      CHH     CAA
gi|270143879|gb|BT110831.1|     1174    +       0       2       CHH     CAC
gi|270143879|gb|BT110831.1|     1176    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1185    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1188    +       0       2       CHG     CAG
gi|270143879|gb|BT110831.1|     1204    +       0       2       CHH     CTC
gi|270143879|gb|BT110831.1|     1206    +       0       2       CHH     CCT
gi|270143879|gb|BT110831.1|     1207    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1216    +       0       2       CG      CGG
gi|270143879|gb|BT110831.1|     1228    +       2       0       CHG     CTG
gi|270143879|gb|BT110831.1|     1234    +       0       2       CHH     CTT
gi|270143879|gb|BT110831.1|     1239    +       0       2       CHH     CAT
gi|270143879|gb|BT110831.1|     1244    +       2       0       CHG     CAG
gi|270143879|gb|BT110831.1|     1254    +       2       0       CG      CGC
gi|270143879|gb|BT110831.1|     1256    +       0       2       CHH     CCA

这个是怎么回事呢?

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
8 [报告]
发表于 2013-08-10 18:58 |只看该作者
回复 7# EnglandUnix


    明显少了个条件,FNR==NR

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-10-08 06:20:00
9 [报告]
发表于 2013-08-11 05:43 |只看该作者
谢谢各位大神

论坛徽章:
0
10 [报告]
发表于 2013-08-12 10:28 |只看该作者
回复 3# WilliBhamlll


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP