Board logo

标题: [文本处理] 【已解决】批处理如何实现文件内容合并? [打印本页]

作者: wangdao6699    时间: 2015-5-6 21:54     标题: 【已解决】批处理如何实现文件内容合并?

本帖最后由 wangdao6699 于 2015-5-9 05:47 编辑

文本内容:
Cr369,钢在高温时仍具高强度
Ni45,能增加钢的韧性
Mn,增加钢之最大强度及硬度
Cr369,增高钢之淬火温度
36CoTiAl21,极易与氧结合形成氧化铝
Mn,最大强度及硬度
。。。。。。。。。。。
以第一个 ,为分隔符,分成两部分,前部分(英文和数字 组成)相同则合并(以,为隔开),不同则原样输出:
Cr369,钢在高温时仍具高强度,增高钢之淬火温度
Ni45,能增加钢的韧性
Mn,增加钢之最大强度及硬度,最大强度及硬度
36CoTiAl21,极易与氧结合形成氧化铝
。。。。。。。。。。。
作者: gawk    时间: 2015-5-6 22:37

  1. gawk -F "," "{a[$1]=a[$1]?a[$1]\",\"$2:$0}END{for(i in a)print a[i]}" 1.txt > 2.txt
复制代码

作者: gawk    时间: 2015-5-6 22:37

  1. gawk -F "," "{if(a[$1])a[$1]=a[$1]\",\"$2; else a[$1]=$0}END{for(i in a)print a[i]}" 1.txt > 2.txt
复制代码

作者: gawk    时间: 2015-5-6 22:38

如果不区分大小写,可以用BAT这样实现:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=," %%i in ('type "1.txt"') do (
  4.     if not defined _%%i (
  5.         set _%%i=%%i,%%j
  6.     ) else (
  7.         set _%%i=!_%%i!,%%j
  8.     )
  9. )
  10. (for /f "tokens=1* delims==" %%i in ('set _') do (
  11.     echo,%%j
  12. ))>2.txt
  13. endlocal
复制代码

作者: bailong360    时间: 2015-5-6 22:46

回复 4# gawk
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "useback tokens=1,* delims=," %%i in ("your.txt") do set #%%i=!#%%i!,%%j
  4. (for /f "tokens=1,* delims=#=" %%i in ('set #') do echo %%i%%j)>$New.txt
复制代码
直接这样貌似也可以,
话说用_做前缀不怎么保险,曾经被 _DFX_INSTALL_UNSIGNED_DRIVER 坑过...
作者: yangfengoo    时间: 2015-5-7 07:02

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2* delims=,:" %%a in ('findstr /n . wb.txt') do (
  4.   set n=1
  5.   for /f "tokens=1,2* delims==," %%i in ('set # ^| findstr "%%b"') do (
  6.    set %%i=!%%i!,%%c
  7.    set n=0
  8.    )
  9.   if "!n!"=="1" set #%%a=%%b,%%c
  10.     )
  11. >new.txt (for /f "tokens=1,* delims==" %%i in ('set #') do echo %%j)
复制代码
求教更好的思路
作者: wangdao6699    时间: 2015-5-7 07:29

回复 4# gawk


    代码运行将结果进行了排序
作者: wangdao6699    时间: 2015-5-7 07:30

回复 5# bailong360


    代码运行将结果进行了排序
作者: wangdao6699    时间: 2015-5-7 07:56

回复 6# yangfengoo


    运行窗口出现:环境变量 #  没有定义
作者: wangdao6699    时间: 2015-5-7 07:58

回复 6# yangfengoo


    感谢您回复,小写没问题
作者: gawk    时间: 2015-5-7 10:20

回复 7# wangdao6699


    是的,利用set命令的特性来实现的代码就是有这个问题。




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