标题: [文本处理] [已解决]批处理如何按照已知顺序更改另一个文本行的顺序? [打印本页]
作者: sweet惜缘 时间: 2015-12-29 14:28 标题: [已解决]批处理如何按照已知顺序更改另一个文本行的顺序?
index.txt中是已知的顺序:
Stitch_ID
CID000002118
CID000002249
CID000002315
CID000002481
CID000002540
CID000002576
CID000002712
CID000002732
CID000002803
CID000003100
link.txt中则是Stitch_ID与drugbank_ID 一 一对应关系:
Stitch_ID drugbank_ID
CID000054687 DB00175
CID000060846 DB00177
CID005362129 DB00178
CID000034359 DB00190
CID000004771 DB00191
CID000033741 DB00193
CID000012560 DB00199
CID000002519 DB00201
CID000060164 DB00210
CID000003476 DB00222
CID000053232 DB00227
undo.txt中则是需要重新排行顺序的data,希望把undo.txt中的行按照index的顺序重新排列,依据是link.txt中的Stitch_ID与drugbank_ID 一 一对应关系:
DB00175 631
DB00177 70
DB00178 244
DB00190 3876
DB00191 540 824 713 3941 3939
DB00193 847 540 824 590 696 467 706 5878 51
DB00199 884 4237 4238
最后得到的out.txt希望是按照index中的顺序重新排列的
DB00191 540 824 713 3941 3939
DB00210 162 229 780 88 730 459
DB00177 70
DB00241 872 423 580 530 523 841 947 4095 921 918
作者: flyinnet9 时间: 2015-12-29 15:15
没看懂,闪
作者: hlzj88 时间: 2015-12-29 17:07
xp测试成功- for /f %%a in (index.txt) do (
- for /f "tokens=1,2 delims= " %%i in ('findstr /ibc:"%%a" link.txt') do (
- findstr /ibc:"%%j" undo.txt>>www.txt
- ))
复制代码
作者: sweet惜缘 时间: 2015-12-30 12:41
回复 3# hlzj88
代码有效!灰常感谢!
作者: flyinnet9 时间: 2015-12-30 13:22
哦,是这么个意思啊,来个效率点的- @echo off
- setlocal ENABLEDELAYEDEXPANSION
- for /f "tokens=1*" %%a in (undo.txt) do set "#%%a=%%b"
- for /f "tokens=1-2" %%a in (link.txt) do set %%a=%%b
- (for /f %%c in (index.txt) do for /f %%d in ("!%%c!") do echo.%%d !#%%d!)>1.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |