[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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
///

回复 2# pcl_test


    附件已更新~求解答

TOP

回复 4# bailong360

大神~~为什么bat运行不对~~换成linux环境使用awk -f  语句也发生运行错误~~真的不会了~~话说您程序开头像linux中间case语句好像C~~~难道是在C语言里运行的?但是C里面没有awk呀~~

TOP

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

回复 6# bailong360


   
ENTRY            ATC code        Drug group       Therapeutic category            PATHWAY
                           ~                     ~                      ~                                     ~
  
大神~为什么处理结果是这样~感觉没有提出来的样子。gawk我已经放到system32下面了~但是bat运行出来感觉不对~~

TOP

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

回复 7# sweet惜缘


    大神~~结果出来了~还不错~万分感谢~就是有一点小小的问题~就是就是第四列TC有的不显示数值~~~以及像除了ENTRY这个药的ID以外~其他类似于Drug group、pathway等四类信息都是有可能出现一种药的pathway有好几个编码(如下)~如何能把编码都搜集起来~而不是只搜集第一个其余放弃~3Q~~感谢感谢!!

PATHWAY   hsa04742(80834+83756)  Taste transduction
                  hsa04973(80834+83756)  Carbohydrate digestion and absorption

Therapeutic category: 2357 7139 7190

ATC code: A06AG04 A06AX01

Drug group: DG01593 DG01594


处理结果出现如下小问题~~
就是第四列TC有的不显示数值~~~

D00170           A05AX02         ~                ~                               ~
D00171           ~               ~                7225                            ~
D00172           B02BD05         DG00172          of                              ~
D00173           ~               ~                5100                            ~
D00174           ~               ~                ~                               ~
D00175           R05CB03         DG01071          of                              ~
D00176           V04CJ02         DG01171          of                              hsa04020
D00177           A02BX04         ~                of                              ~
D00178           ~               DG00225          ~                               ~
D00179           ~               ~                ~                               ~
D00180           C01EA01         DG00239          of                              hsa04020
D00181           B01AE03         DG00163          of                              hsa04080
D00182           G03AC01         DG00456          of                              hsa04114
D00183           J01MB02         DG00630          of                              ~
D00184           L04AD01         DG01522          of                              hsa04660
D00185           G03CA04         DG00463          of                              ~
D00186           J01MA02         DG00617          of                              ~
D00187           A11CC01         DG01607          ~

是不是因为如下~~才把of误认为是编码写进去了~~怎么样改正呢??

ENTRY       D00001                      Drug
NAME        Water (JP16/USP);
            Purified water (JP16);
            Purified water in containers (JP16);
            Water, purified (USP);
            Sterile purified water in containers (JP16);
            Water for injection (JP16);
            Water for injection in containers (JP16);
            Sterile water (TN)
FORMULA     H2O
EXACT_MASS  18.0106
MOL_WEIGHT  18.0153
ACTIVITY    Pharmaceutic aid [solvent]
REMARK      Same as: C00001
            Therapeutic category: 7131
BRITE       Therapeutic category of drugs in Japan [BR:br08301]
             7  Agents not mainly for therapeutic purpose
              71  Dispensing medicines
               713  Solvents

TOP

回复 8# DAIC

出来了~~谢拉

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

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

TOP

回复 14# DAIC


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

TOP

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

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

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

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

TOP

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

回复 22# bailong360


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

TOP

返回列表