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

[文本处理] [已解决]批处理如何按照已知顺序更改另一个文本行的顺序?

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
1

评分人数

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

哦,是这么个意思啊,来个效率点的
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. for /f "tokens=1*" %%a in (undo.txt) do set "#%%a=%%b"
  4. for /f "tokens=1-2" %%a in (link.txt) do set %%a=%%b
  5. (for /f %%c in (index.txt) do for /f %%d in ("!%%c!") do echo.%%d !#%%d!)>1.txt
复制代码

TOP

回复 3# hlzj88

代码有效!灰常感谢!

TOP

xp测试成功
  1. for /f %%a in (index.txt) do (
  2.   for /f "tokens=1,2 delims= " %%i in ('findstr /ibc:"%%a" link.txt') do (
  3.     findstr /ibc:"%%j" undo.txt>>www.txt
  4. ))
复制代码
1

评分人数

目的,学习批处理

TOP

没看懂,闪

TOP

返回列表