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

[文本处理] 【已解决】批处理如何实现文件内容合并?

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

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

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

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

  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
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

如果不区分大小写,可以用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
复制代码
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 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 坑过...
1

评分人数

TOP

  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)
复制代码
求教更好的思路

TOP

回复 4# gawk


    代码运行将结果进行了排序

TOP

回复 5# bailong360


    代码运行将结果进行了排序

TOP

回复 6# yangfengoo


    运行窗口出现:环境变量 #  没有定义

TOP

回复 6# yangfengoo


    感谢您回复,小写没问题

TOP

回复 7# wangdao6699


    是的,利用set命令的特性来实现的代码就是有这个问题。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

返回列表