标题: [文本处理] 【已解决】批处理如何实现文件内容合并? [打印本页]
作者: 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
- 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
- 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这样实现:- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=1* delims=," %%i in ('type "1.txt"') do (
- if not defined _%%i (
- set _%%i=%%i,%%j
- ) else (
- set _%%i=!_%%i!,%%j
- )
- )
- (for /f "tokens=1* delims==" %%i in ('set _') do (
- echo,%%j
- ))>2.txt
- endlocal
复制代码
作者: bailong360 时间: 2015-5-6 22:46
回复 4# gawk - @echo off
- setlocal enabledelayedexpansion
- for /f "useback tokens=1,* delims=," %%i in ("your.txt") do set #%%i=!#%%i!,%%j
- (for /f "tokens=1,* delims=#=" %%i in ('set #') do echo %%i%%j)>$New.txt
复制代码
直接这样貌似也可以,
话说用_做前缀不怎么保险,曾经被 _DFX_INSTALL_UNSIGNED_DRIVER 坑过...
作者: yangfengoo 时间: 2015-5-7 07:02
- @echo off
- setlocal enabledelayedexpansion
-
- for /f "tokens=1,2* delims=,:" %%a in ('findstr /n . wb.txt') do (
- set n=1
- for /f "tokens=1,2* delims==," %%i in ('set # ^| findstr "%%b"') do (
- set %%i=!%%i!,%%c
- set n=0
- )
- if "!n!"=="1" set #%%a=%%b,%%c
- )
- >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 |