免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提取相应列(域) [复制链接]

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-22 09:18 |只看该作者 |倒序浏览
5可用积分
文件有很多列,需要按照列名提取数据,需要提取的列名在另外一个文件放着。
举个例子
  1.         9646769066_R01C01        9646769066_R01C02        9646769066_R02C01        9646769066_R02C02        9646769066_R03C01        9646769066_R03C02        9646769066_R04C01        9646769066_R04C02
  2. BobWhite_c10015_641        GG        GG        GG        GG        GG        GG        GG        GG
  3. BobWhite_c10016_302        AA        AA        AA        AA        AA        AA        AA        AA
  4. BobWhite_c10016_431        TT        TT        TT        TT        TT        TT        TT        TT
复制代码
需要提取的列名
  1. 9646769066_R02C01
  2. 9646769066_R02C02
复制代码
结果
  1.         9646769066_R02C01        9646769066_R02C02
  2. BobWhite_c10015_641        GG        GG
  3. BobWhite_c10016_302        AA        AA
  4. BobWhite_c10016_431        TT        TT
复制代码

最佳答案

查看完整内容

回复 1# mswsg try:

论坛徽章:
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
2 [报告]
发表于 2014-10-22 09:18 |只看该作者
回复 1# mswsg


try:
  1. awk 'NR==FNR{a[++n]=$1;next}FNR==1{for(i=1;i<=n;i++)for(j=1;j<=NF;j++)if(a[i]==$j){a[i]=j+1;printf "\t"$j};print "";next}{printf $1;for(i=1;i<=n;i++)printf "\t"$a[i];print ""}' file2 file1
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
3 [报告]
发表于 2014-10-22 09:23 |只看该作者
...没看懂题

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
4 [报告]
发表于 2014-10-22 09:28 |只看该作者
好吧,我实在不知道再怎么描述了,文件第一行是各列的名字,我要按照列的名字提取我需要的列,不知道这样明白吗?回复 2# jcdiy0601


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2014-10-22 09:39 |只看该作者
  1. [root@localhost ~]# awk 'NR==FNR{a[$1];next}{if(FNR==1){for(i=0;i++<NF;)if($i in a){printf "\t"$i;b[++l]=i}print ""}else{printf $1;for(i=0;i++<l;)printf "\t"$(b[i]);print ""}}' b a
  2.         9646769066_R02C01        9646769066_R02C02
  3. BobWhite_c10015_641        GG        GG
  4. BobWhite_c10016_302        AA        AA
  5. BobWhite_c10016_431        TT        TT
  6. [root@localhost ~]# cat a
  7.         9646769066_R01C01        9646769066_R01C02        9646769066_R02C01        9646769066_R02C02        9646769066_R03C01        9646769066_R03C02        9646769066_R04C01        9646769066_R04C02
  8. BobWhite_c10015_641        GG        GG        GG        GG        GG        GG        GG        GG
  9. BobWhite_c10016_302        AA        AA        AA        AA        AA        AA        AA        AA
  10. BobWhite_c10016_431        TT        TT        TT        TT        TT        TT        TT        TT
  11. [root@localhost ~]# cat b
  12. 9646769066_R02C01
  13. 9646769066_R02C02
  14. [root@localhost ~]#
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
6 [报告]
发表于 2014-10-22 10:21 |只看该作者
谢谢,一直以来及时的帮助回复 5# yestreenstars


   

论坛徽章:
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
7 [报告]
发表于 2014-10-22 14:01 |只看该作者
php练习~~
  1. <?php
  2. $tmparr=array("9646769066_R02C01","9646769066_R02C02");
  3. $file = file('200.txt');
  4. $key=array();
  5. for ($i=0; $i <count($file) ; $i++) {
  6.         if($i==0){
  7.                   $arr = preg_split('/[ ]+/', $file[$i]);
  8.                   for ($m=0; $m <count($tmparr)  ; $m++) {
  9.                             $key[] = array_search($tmparr[$m], $arr)+1;
  10.                             echo "\t".$tmparr[$m];
  11.                   }
  12.                   echo "\n";
  13.                 }else{
  14.                   $arr=preg_split('/[ ]+/', $file[$i]);
  15.                     echo $arr[0]."\t";
  16.                   for ($m=0; $m <count($key) ; $m++) {
  17.                      echo $arr[$key[$m]]."\t";
  18.                   }                  
  19.          echo "\n";
  20.                 }
  21.        
  22. }
  23. ?>

  24. 结果:
  25.         9646769066_R02C01        9646769066_R02C02
  26. BobWhite_c10015_641        GG        GG       
  27. BobWhite_c10016_302        AA        AA       
  28. BobWhite_c10016_431        TT        TT       

  29. [Finished in 0.2s]
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP