我想合并此文件中的某些行。
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
答案 0 :(得分:2)
这使用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
将零添加到未定义的值将返回数字零。