标题: [问题求助] 求助BAT或VBS对有相同的两列进行求和,并按格式输出 [打印本页]
作者: filippo009 时间: 2020-12-23 21:06 标题: 求助BAT或VBS对有相同的两列进行求和,并按格式输出
请问BAT 或VBS ,对A列和B列同时相同时求和,不相同不计算,假设原有 txt如下;
ax001|1201|50|0.2
ax002|1202|100|0.4
ax003|1203|60|0.1
ax001|1201|30|0.2
ax002|1202|20|0.1
输出到一个新的txt,如下面样式:
ax001|1201|数量:80|0.3
ax002|1202|数量:120|0.5
ax003|1203|数量:60|0.2
非常感谢,可以的可以私聊
作者: ivor 时间: 2020-12-24 10:50
本帖最后由 ivor 于 2020-12-25 09:51 编辑
保存为utf-8格式- #&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit
- @(
- (GC "a.txt") | select `
- @{name='col1'; expression={([regex]::Match($_,'^[a-z0-9]+\|\d+')).value}},
- @{name='col2'; expression={([regex]::Match($_,'(?<=\|)[0-9\.]+$')).value}},
- @{name='col3'; expression={([regex]::Match($_,'(\d+)(?=(\|[0-9\.]+$))')).value}}|
- group col1
- ) | %{;$_.Name,('数量:'+ ($_.Group |measure -Property col3 -Sum).Sum),($_.Group | measure -Property col2 -Sum).Sum -join '|'}
复制代码
ax001|1201|数量:80|0.4
ax002|1202|数量:120|0.5
ax003|1203|数量:60|0.1
请按任意键继续. . .
作者: filippo009 时间: 2020-12-24 15:20
回复 2# ivor
确实有些看不懂呢, 你太厉害了,
作者: terse 时间: 2020-12-24 20:06
- gc a.txt | group { $_.split('\|')[0..1] -join "|" }| % {
- $n = $sum = 0;
- $_.Group|%{
- $sum += $_.split('\|')[-1];
- $n += $_.split('\|')[-2];
- }
- $_.name,'数量:'+ $n,$sum -join '|';
- }
复制代码
作者: filippo009 时间: 2020-12-24 23:20
回复 2# ivor
数量不对,不是计算两次,而是计算两者之和呢,
作者: ivor 时间: 2020-12-25 09:40
回复 5# filippo009
已更新
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |