标题: [文本处理] [已解决]批处理如何查找文本是否存在指定字段并用0和1标识有无? [打印本页]
作者: sweet惜缘 时间: 2016-1-6 11:14 标题: [已解决]批处理如何查找文本是否存在指定字段并用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
灰常感谢!!!
作者: sweet惜缘 时间: 2016-1-6 16:23
@pcl_test~~~~斑竹大大~~救命啊
作者: pcl_test 时间: 2016-1-6 17:42
本帖最后由 pcl_test 于 2016-1-11 01:47 编辑
- @echo off
- setlocal enabledelayedexpansion
- echo;正在处理数据中……
- for /f "tokens=1,2" %%a in (index.txt) do set #%%b=%%a&set n=%%b
- (for /f "tokens=1*" %%a in (Data.txt) do (
- set /p"=%%a "
- for %%c in (%%b) do set %%c=1
- for /l %%i in (1 1 %n%) do (
- for %%j in (!#%%i!) do (
- if defined %%j (
- set /p"=1[%%i][%%j] "
- rem 不显示[序号][Target_ID],上句改为set /p"=1 "
- set "%%j="
- ) else set /p"=0 "
- )
- )
- echo;
- ))<nul>out.txt
- pause
复制代码
作者: sweet惜缘 时间: 2016-1-6 18:14
回复 3# pcl_test
大神~~~爱死你啦~~~撒花~~~~
作者: sweet惜缘 时间: 2016-1-6 18:15
回复 3# pcl_test
顺便把我新的问题再看一下呗~~~就把两个数据合成一个的那个~~~~~
感激~~~~
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |