标题: [文本处理] [已解决]批处理如何根据两个文件共有的字段按指定规则合并内容? [打印本页]
作者: sweet惜缘 时间: 2016-1-6 18:05 标题: [已解决]批处理如何根据两个文件共有的字段按指定规则合并内容?
http://pan.baidu.com/s/1bnQl9GN————DDI.txt(470+kb,上传受到限制,已上传到网盘)
link中为一对一的数据:共2531行
drug_ID1 drug_ID2
CID000002118 CID000000896
CID000002249 CID000002162
CID000002315 CID000002249
CID000002481 CID000001983
CID000002540 CID000002162
CID000002576 CID000002244
CID000002712 CID000002160
CID000002732 CID000002249
CID000002803 CID000002732
CID000003100 CID000002153
DDI.txt中则是每一个drug对应的freature,共244列
CID000000896 0.094964932 0.017092211 0.155580108 ...
CID000002160 -0.062096048 -0.086881386 0.20744211 ...
CID000002732 -0.496820789 -0.190601593 0.28186401 ...
CID000002118 -0.29739373 0.5744065 0.017642712 ...
CID000002803 0 -3.08E-16 -3.65E-16 ...
CID000002249 -0.078018598 -0.032563755 -0.04617945 ...
希望得到的out.txt中的结果如下,即为2531X488的矩阵文本(根据link.txt中的内容分别查找DDI格drug的freature然后其在link.txt中的两个drug的先后顺序将两个drug的freature放入一行中,即为244X2列)
drug_ID1 drug_ID2 drug1_ freature (244列) drug2_ freature(244列)
CID000002118 CID000000896 0.094964932 0.017092211 0.155580108 ... -0.29739373 0.5744065 0.017642712
CID000002249 CID000002162 -0.078018598 -0.032563755 -0.04617945 ... -0.062096048 -0.086881386 0.20744211
CID000002540 CID000002162 ......
灰常感谢~~~~
作者: pcl_test 时间: 2016-1-6 21:33
- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1*" %%a in (DDI.txt) do set "#%%a=%%b"
- (for /f "tokens=1,2" %%a in (link.txt) do echo;%%a %%b !#%%a! !#%%b!)>out.txt
- pause
复制代码
作者: sweet惜缘 时间: 2016-1-6 22:01
回复 2# pcl_test
运行粗来结果不对~~~大神你到底有没有认真读题~~~PB-5~~~
作者: pcl_test 时间: 2016-1-6 22:03
回复 3# sweet惜缘
能先告诉我你网盘上的DDI.txt跟你这贴出来的为什么不同?
作者: sweet惜缘 时间: 2016-1-6 22:05
本帖最后由 sweet惜缘 于 2016-1-6 22:08 编辑
回复 4# pcl_test
= =~要不我重传个excle文件吧~~这个比较正确~格式~~
作者: sweet惜缘 时间: 2016-1-6 22:09
回复 4# pcl_test
http://pan.baidu.com/s/1jH05kKe
新鲜热乎的excle文件~~~~速来下载啦
作者: pcl_test 时间: 2016-1-6 22:13
回复 5# sweet惜缘
并不感兴趣,只要你把DDI.txt弄成你在描述里说的那种格式即可
DDI.txt中则是每一个drug对应的freature,共244列
CID000000896 0.094964932 0.017092211 0.155580108 ...
CID000002160 -0.062096048 -0.086881386 0.20744211 ...
作者: sweet惜缘 时间: 2016-1-7 11:55
回复 7# pcl_test
恩~~确实~~~解决啦~~~感谢~~~
作者: sweet惜缘 时间: 2016-1-7 17:03
本帖最后由 sweet惜缘 于 2016-1-7 17:48 编辑
回复 7# pcl_test
大神~~为嘛我把DDI换成DTI 结果就出不来了哩~~~是不是因为一个是double类型的数据而另一个不是~~~
DTI的百度云链接如下:http://pan.baidu.com/s/1eRrQfYi
DTI的内容如下~~: 共245X4145列~
CID000002118 0 0 0 0 0 0 0 0 0 0 0 0 0
CID000002249 0 0 0 0 0 0 0 0 0 0 0 0 0
CID000002315 0 0 0 0 0 0 0 0 0 0 0 0 0
CID000002481 0 0 0 0 0 0 0 0 0 0 0 0 0
CID000002540 0 0 0 0 0 0 0 0 0 0 0 0 0
灰常感谢思密达
作者: sweet惜缘 时间: 2016-1-7 20:22
回复 7# pcl_test
大神。。。。去哪了~~~~求助
作者: pcl_test 时间: 2016-1-7 20:40
回复 9# sweet惜缘 - //&cls&cscript -nologo -e:jscript "%~f0" "DTI.txt" "link.txt">out.txt&pause&exit
-
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var f1 = fso.OpenTextFile(WScript.Arguments(0), 1);
- var f2 = fso.OpenTextFile(WScript.Arguments(1), 1);
- var map={};
- while(!f1.AtEndOfStream){
- if(/^\s*(\S+)\s+(.+)$/.test(f1.ReadLine())){
- map[RegExp.$1]=RegExp.$2;
- }
- }
- f1.Close();
- while(!f2.AtEndOfStream){
- str = f2.ReadLine().split(/\s+/);
- WSH.echo(str[0]+'\t'+str[1]+'\t'+map[str[0]]+' '+map[str[1]])
- }
- f2.Close();
复制代码
作者: sweet惜缘 时间: 2016-1-8 10:41
回复 11# pcl_test
灰常感谢!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |