Board logo

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

作者: sweet惜缘    时间: 2015-12-5 16:50     标题: [已解决]批处理如何合并同类项并按照编号大小排序?

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

原数据:
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


程序应该如何编写?跪求大神解答
作者: pcl_test    时间: 2015-12-5 17:13

本帖最后由 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
复制代码

作者: sweet惜缘    时间: 2015-12-5 17:55

回复 2# pcl_test

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


您会发现sequence文件很小,因为运行您的程序的得到的new_data是全部数据,其实我只需要其中一部分数据,就是sequence里出现编号的数据。
作者: pcl_test    时间: 2015-12-5 18:05

回复 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
复制代码

作者: sweet惜缘    时间: 2015-12-5 18:11

回复 4# pcl_test

有效!非常感谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2