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

本帖最后由 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

回复 9# 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

回复 19# sweet惜缘


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

TOP

回复 21# sweet惜缘


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

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

TOP

返回列表