首页 > 解决方案 > 在总和之后将数据拆分为特定值

问题描述

如何在input.txt大小总和之后拆分column 180000

输入.txt

11736 textDYN.txt
65736 textMV.txt
61812 textDYN_1.txt
11750 textGB.txt

$1 < 80000

total sum = 77472 under 80000然后,它将输出为output_001.txt

11736 textDYN.txt
65736 textMV.txt

total sum = 73562 under 80000然后,它将输出为output_002.txt

61812 textDYN_1.txt
11750 textGB.txt

标签: awk

解决方案


$ cat tst.awk
{
    sub(/\r$/,"")
    sum += $1
}
(NR == 1) || (sum > 80000) {
    close(out)
    out = sprintf("output_%03d.txt",++cnt)
    sum = $1
}
{ print $0 " > " out }

$ awk -f tst.awk file
11736 textDYN.txt > output_001.txt
65736 textMV.txt > output_001.txt
61812 textDYN_1.txt > output_002.txt
11750 textGB.txt > output_002.txt

更改print $0 " > " outprint > out完成测试时。


推荐阅读