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

[文本处理] [已解决]批处理如何批量提取文本中的特定内容?

如何提取drugnbank.txt中每个drug的Drug_Target_ID信息,(有的dug_target信息不止下面3个,可能多达几十个),由于附件太大,已上传至百度网盘,链接如下:http://pan.baidu.com/s/1numNLLf
这个是网盘附件中一个drug信息的txt.)

# Drug_Target_1_ID:
3819

# Drug_Target_1_Locus:
11p11-q12

# Drug_Target_1_Molecular_Weight:
70037

# Drug_Target_1_Name:
Prothrombin

# Drug_Target_1_Number_of_Residues:
622

# Drug_Target_1_PDB_ID:
1HAG

# Drug_Target_2_ID:
54

最后希望得到的out_target.txt内容如下(有的没有target的信息就空着):
BEGIN_DRUGCARD                 Drug_Target_1_ID                         Drug_Target_2_ID                   Drug_Target_3_ID     .....
DB00001                                3819                                            54                                          ...
DB00002                                ...                                                ...                                          ...
...
...



灰常感谢!!!

回复 5# pcl_test


    看到了 = = 我眼瞎了 感谢!!!!

TOP

回复 5# pcl_test

汗~能否把括号里的数字去掉?我只需要后面的ID,不需要括号中的标号~~
灰常感谢!!

TOP

回复 4# sweet惜缘

不是说了怎么改了吗

TOP

回复 2# pcl_test

大神。有一个问题,能否把括号内的数字去掉?
DB00001        (1)54                                                                                                       
DB00002        (1)844        (2)1102        (3)3814        (4)3815        (5)3816        (6)3817        (7)3818        (8)2782        (9)784        (10)3819        (11)3820        (12)3821               
DB00003        (1)874                                                                                                       
DB00004        (1)724        (2)717        (3)3823                                                                                       
DB00005        (1)777        (2)1269        (3)784        (4)3818        (5)3819        (6)3820        (7)3821        (8)1789        (9)1102        (10)2782        (11)3814        (12)3815        (13)3816        (14)3817
希望得到的如下:
DB00001        54                                                                                                       
DB00002        844        1102        3814        3815        3816        3817        3818        2782        784        3819        3820        3821

TOP

回复 2# pcl_test


    灰常感谢!!程序有效!

TOP

  1. 1>1/* :
  2. @echo off
  3. cscript -nologo -e:jscript "%~f0" "drugbank.txt">"out.txt"
  4. echo;完成
  5. pause & exit/b
  6. */
  7. var txt ='';
  8. var fso = new ActiveXObject('Scripting.FileSystemObject');
  9. var f = fso.OpenTextFile(WScript.Arguments(0));
  10. while(!f.AtEndOfStream) {
  11.     var str = f.ReadLine();
  12.     if(/^\s*$/.test(str))var id=null;
  13.     if(id){
  14.         map[id]=str;
  15.         arr.push(id);
  16.     }
  17.     if(/^#\s?BEGIN_DRUGCARD/.test(str)){
  18.         var tmp='', arr=[], map={};
  19.         tmp+=str.replace(/^.+\s/,'');
  20.     }
  21.     if(/^# Drug_Target_(\d+)_ID:/.test(str)){var id=RegExp.$1;}
  22.     if(/^#\s?END_DRUGCARD/.test(str)){
  23.         arr.sort(function(a,b){return a-b});
  24.         for(var i=0; i<arr.length;i++){
  25.             tmp+='  ('+arr[i]+')'+map[arr[i]];
  26.             //不显示序号,上句改为tmp+='  '+map[arr[i]];
  27.         }
  28.         txt+=tmp+'\r\n'
  29.         map=null;
  30.     }
  31. }
  32. WSH.Echo(txt);
复制代码

TOP

返回列表