[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 【已解决】gawk如何提取并统计文本里的特定内容

[attach]8453[/attach]
想把附件中的每一种药的ENTRY、ATC code、Drug group、Therapeutic category、PATHWAY信息提取出来写到excle或者文本文件中
格式如下
ENTRY            ATC code        Drug group       Therapeutic category            PATHWAY
D00011         B05CX03         DG01672          7131                                     hsa04080

我本身要处理的文档有10000+种药,为了迅速起见,我只上传了2种药,事实上每种药一般不会同时具有ATC code、Drug group、Therapeutic category、PATHWAY四种信息,如果没有~空出来就好,望大神可以不吝帮助~在下感激不尽

每一种药的具体信息类似于下
ENTRY       D00012                      Drug
NAME        L-Alanine (JP16);
            Alanine (USP)
FORMULA     C3H7NO2
EXACT_MASS  89.0477
MOL_WEIGHT  89.0932
ACTIVITY    Amino acid
REMARK      Same as: C00041
            Drug group: DG01672
INTERACTION  
BRITE       Risk category of Japanese OTC drugs [BR:br08312]
             Third-class OTC drugs
              Inorganic and organic chemicals
               L-Alanine
                D00012  L-Alanine (JP16); Alanine (USP)
            Pharmaceutical additives [BR:br08316]
             Stabilizing agent
              D00012  [003609] L-Alanine
            Drugs listed in the Japanese Pharmacopoeia [BR:br08311]
             Chemicals
              D00012  L-Alanine
DBLINKS     CAS: 56-41-7
            PubChem: 7847080
            DrugBank: DB00160
            PDB-CCD: ALA
            LigandBox: D00012
            NIKKAJI: J9.168E
ATOM        6
            1   O6a O     4.6200  -11.8300
            2   C6a C     5.8324  -11.1300
            3   C1c C     7.0449  -11.8300
            4   C1a C     8.2573  -11.1300
            5   O6a O     5.8324   -9.7302
            6   N1a N     7.0449  -13.2298
BOND        5
            1     1   2 1
            2     2   3 1
            3     3   4 1
            4     2   5 2
            5     3   6 1 #Down
///

本帖最后由 sweet惜缘 于 2015-4-1 10:40 编辑

回复 22# bailong360


    谢拉~~万分感谢~~很好用!好人一生平安~~·

TOP

回复 21# sweet惜缘


    测试了一下,上一个版本除了PATHWAY以外应该都收集全了

目前版本对给出的文件除了PATHWAY依然为3500以外其它的都收集完全了

TOP

本帖最后由 sweet惜缘 于 2015-4-1 10:38 编辑

回复 20# bailong360
已上传到网盘~~大神~~~您这次修改的程序只能提取出600+的药物~难道是数据量太大的原因吗
望指点~
万分感谢!!

TOP

回复 19# sweet惜缘


    已修改
如果想要得到的代码更完美,建议在顶楼附上有代表性的样本,样本过大的话可以传到百度云之类上然后在顶楼给出链接
这样在调试代码的过程中就能知道有没有取到所有情况

TOP

本帖最后由 sweet惜缘 于 2015-3-30 15:27 编辑

回复 13# bailong360

大神~我今早试了下~分类和计数可以用~~~昨天可能没操作好~但现在有一个小问题~~
有的搜集出来没有搜到TC number~但事实上是有的~
D02217
REMARK      Therapeutic category: 3999
            ATC code: G03XC01
            Drug group: DG00476
比如说这个就有TC Number~但是我们没有搜集出来

大神给的统计数据的统计出来结果如下
拥有ATC code的药物有2307种     事实上分别应该是~4707
拥有Drug group的药物有3860种                               5013

拥有Therapeutic category的药物有742种                2412

拥有PATHWAY的药物有3500种                                  3501
似乎只有pathway搜集的比较全~~如何能够搜集的更全一些呢

万分感谢~~~祝好运~

TOP

回复 17# DAIC
忘记还可以这样了。。。

TOP

回复 16# sweet惜缘


    你的mat压缩成.rar或者.zip之后,上传到论坛的时候报什么错?

TOP

回复 14# DAIC


    不能··因为是MAT格式的。。。。

TOP

回复 13# bailong360
大神.4楼的统计程序为何结果只有如下?感觉这次没有提取出来的样子····
ENTRY            ATC code        Drug group       Therapeutic category            PATHWAY
  还有分四类的程序我现在还试不了··家里没有软件可以打开·等明天回学校了试··还要麻烦您帮我再看看统计数目的程序哪里出了问题呢···谢啦

TOP

回复 12# sweet惜缘


    压缩之后也不能上传吗

TOP

本帖最后由 bailong360 于 2015-3-28 19:32 编辑

用于整理为四个
  1. #&Gawk -f %0 $Data.txt&Exit
  2. BEGIN {
  3.     while((getline<"fenzyme.txt")>0) type1[a++]=$0;
  4.     while((getline<"fenzyme2.txt")>0) type2[b++]=$0;
  5.     while((getline<"fenzyme2.txt")>0) type3[c++]=$0;
  6.     while((getline<"fenzyme2.txt")>0) type4[d++]=$0;
  7.     for(i=1;i<=4;i++) printf("ENTRY            ATC code        Drug group       Therapeutic category            PATHWAY\n")>>"$type"i".txt";
  8. }
  9. NR>1{
  10.     for(i in type1)
  11.         if("'"$1"'"==type1[i]) print $0 >>"$type1.txt";
  12.     for(i in type2)
  13.         if("'"$1"'"==type2[i]) print $0 >>"$type2.txt";
  14.     for(i in type3)
  15.         if("'"$1"'"==type3[i]) print $0 >>"$type3.txt";
  16.     for(i in type4)
  17.         if("'"$1"'"==type4[i]) print $0 >>"$type4.txt";
  18. }
复制代码
是否符合要求?
测试文本带单引号
Eg: 'D00001'

TOP

[attach]8482[/attach]回复 11# bailong360


大神~~~十分感谢~~~代码很好用~~

如果我想统计比如说有pathway、Drug group等这四类每一类有明确编号信息的药物有多少个~该怎么统计呢?
我原本想把您代码中的~改成0~然后导入到EXCLE中统计,最后发现这个方法行不通~只能麻烦您啦~

还有~假如您有空~还有一个小问题想咨询一下~我们现在有10000+的药物信息~但这一万+的药物其实是分为四类药的,每一类我都有其所属的药物ENTRY~我想从我们已经得到的批处理后的文档来匹配这四类的ENTRY~遇到相同的ENTRY就把其已搜集好的信息(就是我们之前搜集的pathway、Drug group、TC、ATC number信息)写进去,最终得到四个表格或者文本即实现了分类~~如何实现?我先把其中一类的药物ENTRY传上来您看一下~~

感谢~~感谢~~

上传的文件是我自己随便抓的~因为原本的文件格式不支持~不能上传~与正确的文件格式只差一个引号~~正确的文件是每种ENTRY都带了' '类似于'D00001'这种~,

TOP

回复 9# sweet惜缘


    已修改,话说开始忘记编码格式了...

TOP

回复 8# DAIC

出来了~~谢拉

TOP

返回列表