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

[文本处理] 【已解决】gawk:多列数据如何合并同类项

本帖最后由 思想之翼 于 2023-9-8 14:04 编辑

a.txt 记录数值如下(等号左侧数值不重复,等号右侧数值只有一列):
000=00
001=01
002=01
003=02
004=03
合并等号右侧同类项,同时合并等号左侧数值,结果 b.txt 为:
00=000
01=001 002
02=003
03=004

【解决方案】:
  1. gawk -F"=" "{a[$2]=a[$2]?a[$2]\" \"$1:$1}END{for (id in a)print id FS a[id]}" a.txt>b.txt
复制代码
【问题】:若文件等号右侧数值有多列,如何合并等号右侧同类项,同时合并等号左侧数值?

例如:a.txt 记录数值如下(等号左侧数值不重复,等号右侧数值有多列):
000=00 04 99
001=01 05 06 03
002=01
003=02 04
004=03 99
合并等号右侧同类项,结果 b.txt 为:
00=000
01=001 002
02=003
03=001 004
04=000 003
05=001
06=001
99=000 004
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 思想之翼 于 2023-9-8 16:06 编辑

回复 2# hfxiang
感谢!经测试,结果正确。
只是有个问题不解:测试文件(UTF-8)超过一定行数,结果为乱码(变成 UTF-16 LE),何因?
3# 纯批也是这种状况。

TOP

返回列表