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

[文本处理] [已解决]批处理如何合并同类项并按照编号大小排序?

如下所示,第一列为编号,第二列为值,可以看到第一行和第二行编号一样,但值不同。我想经过批处理得到的数据为合并编号一样的值,并按编号从小到大排序。

原数据:
CID000028871        M01AB10
CID000028871        M02AA14
CID000002369        C07AB05
CID000002369        S01ED02
CID000002194        A16AX02
CID000042113        N01AB07
CID000017676        N05AB07
CID000031477        S01ED04
CID006918558        G04BD11
CID000002202        D05AC01
CID000041049        N02AX05
CID005462337        A07EC03
经过批处理后想得到的:

CID000002194        A16AX02
CID000002202        D05AC01
CID000002369        C07AB05,S01ED02
CID000017676        N05AB07
CID000028871        M01AB10,M02AA14
CID000031477        S01ED04
CID000041049        N02AX05
CID000042113        N01AB07
CID005462337        A07EC03
CID006918558        G04BD11


程序应该如何编写?跪求大神解答

回复 4# pcl_test

有效!非常感谢!

TOP

回复 3# sweet惜缘
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*" %%a in (data.txt) do (
  4.     if not defined #%%a (set #%%a=%%b) else set #%%a=!#%%a!,%%b
  5. )
  6. (for /f %%a in (sequence.txt) do echo;%%a !#%%a!)>new_data.txt
  7. pause
复制代码

TOP

回复 2# pcl_test

大神~刚运行了一下您的程序,结果出来了,但是现在有个问题,我发现我最后要的数据编号并不是由小到大的,其实是无规律的,如何按照我附件上传的顺序将其重新排序呢?非常感谢!


您会发现sequence文件很小,因为运行您的程序的得到的new_data是全部数据,其实我只需要其中一部分数据,就是sequence里出现编号的数据。

TOP

本帖最后由 pcl_test 于 2015-12-5 17:23 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1*" %%a in (data.txt) do (
  4.     if not defined #%%a (set #%%a=%%b) else set #%%a=!#%%a!,%%b
  5. )
  6. (for /f "tokens=1* delims=#=" %%a in ('set #') do echo;%%a %%b)>new_data.txt
  7. pause
复制代码

TOP

返回列表