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

[文本处理] [已解决]批处理如何查找文本是否存在指定字段并用0和1标识有无?

http://pan.baidu.com/s/1dDKHGEd  ————Data.txt
http://pan.baidu.com/s/1kTUEO4J   ————index.txt(由于附件超出限制,只能请各位大大们移步百度云下载啦~辛苦思密达)

Data.txt中内容如下(每一个drug后面都是该drug拥有的target_ID内容):
drug_ID    Target_ID
DB00001        BE0000048                                                               
DB00002        BE0000767        BE0000901        BE0002093        BE0002094        BE0002095        BE0002096        BE0002097        BE0001529        BE0000710
DB00003        BE0004796                                                               
DB00004        BE0000658        BE0000651        BE0002102                                               

index.txt中内容如下:
Target_ID         index
BE0000001        1
BE0000002        2
BE0000003        3
BE0000004        4
BE0000005        5
BE0000006        6
...                    ...
BE0008644        4144

希望得到out.txt如下(规则为:将Data.txt中每一个drug的所有target_ID在index.txt中找到对应的index,该index对应于out.txt中的列数,行数为drug_ID,列数则为index位置置1,如没有该target_ID则置0):
drug_ID    BE0000001     BE0000002      BE0000003      BE0000004     BE0000005        BE0000006     .....          BE0008644 (target应共有4144列)
DB00001             0                      0                       0                       0                      0                        0                                      0                                               
DB00002             0                      0                     0                        0                      0                        0                                      0
...
DB...             0                       1                     0                       0                      1                        0                                      1

灰常感谢!!!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

@pcl_test~~~~斑竹大大~~救命啊

TOP

本帖最后由 pcl_test 于 2016-1-11 01:47 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo;正在处理数据中……
  4. for /f "tokens=1,2" %%a in (index.txt) do set #%%b=%%a&set n=%%b
  5. (for /f "tokens=1*" %%a in (Data.txt) do (
  6.     set /p"=%%a "
  7.     for %%c in (%%b) do set %%c=1
  8.     for /l %%i in (1 1 %n%) do (
  9.         for %%j in (!#%%i!) do (
  10.             if defined %%j (
  11.                 set /p"=1[%%i][%%j] "
  12.                 rem 不显示[序号][Target_ID],上句改为set /p"=1 "
  13.                 set "%%j="
  14.             ) else set /p"=0 "
  15.         )
  16.     )
  17.     echo;
  18. ))<nul>out.txt
  19. pause
复制代码
1

评分人数

TOP

回复 3# pcl_test


    大神~~~爱死你啦~~~撒花~~~~

TOP

回复 3# pcl_test


    顺便把我新的问题再看一下呗~~~就把两个数据合成一个的那个~~~~~

    感激~~~~

TOP

返回列表