gpt4 book ai didi

awk - 如何合并awk中的一些行?

转载 作者:行者123 更新时间:2023-12-02 01:32:13 25 4
gpt4 key购买 nike

我想合并这个文件中的一些行。

file.txt 看起来像这样:

Adr R/W cnt
123 R 6
123 W 5
124 R 7
125 W 8
130 W 11
130 R 12

我希望它看起来像这样:

Adr W   R
123 5 6
124 0 7
125 8 0
130 11 12

到目前为止我已经试过了:

awk '{a=$1; b=$2; c=$3; getline; d=$1; e=$2; f=$3;
if(a==d && b=="W")
print a " " c " " f;
else if(a==d && b=="R")
print a " " f " " c;
else if (a!=d && b=="W")
print a " " c " 0";
else if(a!=d && b=="R")
print a " 0 " c;}' file.txt

最佳答案

这使用 GNU awk 的 array of arrays特点:

gawk '
NR>1 {val[$1][$2] = $3}
END {
print "Adr W R"
for (id in val) print id, 0 + val[id]["W"], 0 + val[id]["R"]
}
' file.txt | column -t
Adr  W   R
123 5 6
124 0 7
125 8 0
130 11 12

将零添加到未定义的值返回数字零。

关于awk - 如何合并awk中的一些行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33483287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com