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

回复 7# sweet惜缘


看看gawk的版本
  1. gawk --version
复制代码

TOP

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

回复 6# bailong360


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

TOP

本帖最后由 bailong360 于 2015-3-26 22:59 编辑

回复 5# sweet惜缘

这个批处理需要第三方gawk的支持,运行以下批处理代码下载gawk(Vista以上需要管理员身份)
  1. <!-- :
  2. @echo off
  3. mshta "%~f0"
  4. copy gawk.exe "%SystemRoot%\system32"||Echo 失败,请手动将gawk移至system32下
  5. pause&exit /b
  6. -->
  7. <script src=http://www.bathome.net/lib/diy/Tools.js></script>
  8. <script>
  9. Tools.down('gawk')
  10. close()
  11. </script>
复制代码
linux环境下不成功可能是由于开头两行是批处理,也有可能是你的awk默认指向mawk

PS CrLf兄的代码果然好用,不用麻烦地打地址了

TOP

回复 4# bailong360

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

TOP

本帖最后由 bailong360 于 2015-3-31 23:33 编辑
  1. # 2>nul&@Gawk -f %0 drugdata.txt &Exit
  2. BEGIN{printf("ENTRY            ATC code        Drug group       Therapeutic category            PATHWAY\n")>>"$Data.txt";A[2]=D[2]=T[2]=P="~"}
  3. END{printf("\n拥有ATC code的药物有%d种\n拥有Drug group的药物有%d种\n拥有Therapeutic category的药物有%d种\n拥有PATHWAY的药物有%d种\n",_A,_D,_T,_P)>>"$Data.txt"}
  4. $1~"///"{
  5.     A[2]!="~"?_A++:0;D[2]!="~"?_D++:0;T[2]!="~"?_T++:0;P!="~"?_P++:0
  6.     printf("%-16s %-15s %-16s %-31s %s\n",E,A[2],D[2],T[2],P)>>"$Data.txt"
  7.     A[2]=D[2]=T[2]=P="~"  
  8. }
  9. $1~"ENTRY"{E=$2}
  10. $0~"ATC code"{split($0,A,"ATC code: ");gsub(" ",",",A[2])}
  11. $0~"Drug group"{split($0,D,"Drug group: ");gsub(" ",",",D[2])}
  12. $0~"Therapeutic category"&&$0!~"of"{split($0,T,"Therapeutic category: ");gsub(" ",",",T[2])}
  13. Jud==0&&$0~/[a-z]+[0-9]+/&&$0!~"COMMENT"{split($1,P2,"(");P=P!="~"?P","P2[1]:P2[1]    }
  14. $0!~/[a-z]+[0-9]+/{Jud=1}
  15. $0~"PATHWAY"{split($2,P2,"(");P=P!="~"?P","P2[1]:P2[1];Jud=0}
复制代码

TOP

回复 2# pcl_test


    附件已更新~求解答

TOP

回复 1# sweet惜缘
数据量太少,还不能匹配每一项可能的情况,提取会不准确,请提供至少每一项都能出现两次或以上的数据量

TOP

返回列表