找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25326|回复: 4

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

[复制链接]
发表于 2015-12-29 14:28:52 | 显示全部楼层 |阅读模式
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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-12-29 15:15:12 | 显示全部楼层
没看懂,闪
发表于 2015-12-29 17:07:42 | 显示全部楼层
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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-12-30 12:41:05 | 显示全部楼层
回复 3# hlzj88

代码有效!灰常感谢!
发表于 2015-12-30 13:22:43 | 显示全部楼层
哦,是这么个意思啊,来个效率点的
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 07:45 , Processed in 0.011230 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表