
标题: [文本处理] [已解决]批处理如何将文本第二列内容相同的行第一列的内容进行合并 [打印本页]
作者: mick00034 时间: 2015-10-12 23:13 标题: [已解决]批处理如何将文本第二列内容相同的行第一列的内容进行合并
批处理前:名字后面带数字范围是1~3,批处理后,分类一下。
赵云 1
金一 2
金二 2
黎明 3
王大 3
刘玉 1
批处理后:如果1=人名有50个的话,可以10行排列(最好可以自定义),不要全部一行排列,那样太长。不同年级的人数有几十或上百,批处理后要显示结果。如一年级多少人,二年级多少人,三年级多少人?不同年级之间有空行分隔
一年级2人:赵云,刘玉。
二年级2人:金一,金二。
三年级2人:黎明,王大。
谢谢大家。
作者: terse 时间: 2015-10-13 00:05
本帖最后由 terse 于 2015-10-13 22:46 编辑
- @echo off&setlocal enabledelayedexpansion
- set _1=总经理&set _2=科长&set "_3=职员"
- for /f "tokens=1*" %%i in (w.txt) do (
- set /a $%%j+=1,n=$%%j%%10
- set "#%%~nxj=!#%%~nxj! %%i"
- if !n! equ 0 set #%%~nxj=!#%%~nxj!^
-
-
- )
- for /l %%i in (1,1,3) do echo !_%%i! !$%%i! 人: !#%%i!
- pause
复制代码
作者: wankoilz 时间: 2015-10-13 13:45
本帖最后由 wankoilz 于 2015-10-13 13:47 编辑
练习awk:- #&cls&set/p line=设置单行显示人数:
- #&cls&@gawk -v line=%line% -f %0 a.txt>con&pause>nul&exit
- {
- if(!(++count[$2]%line)){cr="\n"}else{cr=""}
- col[$2]=col[$2]$1" "cr
- }
- END{
- for(i in col){
- print i"年级"count[i]"人:\n"col[i]"\n"
- }
- }
复制代码
gawk 4.1.0 下载地址:http://www.bathome.net/viewthread.php?tid=21366&highlight=gawk
作者: mick00034 时间: 2015-10-13 22:00
本帖最后由 mick00034 于 2015-10-13 22:03 编辑
回复 2# terse
非常感谢,如果想要按照职称级别划分的话,代码可以调整吗,如要得到的结果
总经理2人:赵云 刘玉
科长2人:金一 金二
职员2人:黎明 王大
作者: terse 时间: 2015-10-13 22:47
回复 4# mick00034
2楼 已修改
作者: filippo009 时间: 2020-12-16 08:59
回复 2# terse
假设原有 txt 样式(这种情况在同一txt)如下,把第一列相同输出在一行,非常感谢老师 !
ad001|购买1000
ad002|卖出2000
ad003|购买1000
ad004|持平1000
ad005|卖出1500
ad001|卖出1000
ad002|暂无数据
输出结果:
ad001|购买1000 & 卖出1000
ad002|卖出2000 & 暂无数据
ad003|购买1000
ad004|持平1000
ad005|卖出1500
作者: terse 时间: 2020-12-16 12:39
本帖最后由 terse 于 2020-12-16 12:46 编辑
文件小可以- @echo off&setlocal enabledelayedexpansion
- for /f "usebackq tokens=1*delims=|" %%i in ("a.txt") do (
- if not defined _"%%i" (
- set /a n+=1
- set _!n!=%%i
- set "_"%%i"=%%i|%%j"
- ) else set "_"%%i"=!_"%%i"! & %%j"
- )
- for /l %%i in (1,1,%n%) do for %%j in ("!_%%i!") do echo;!_"%%~nxj"!
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |