我正在尝试根据行中的第一个值连接行。我的文件看起来像这样:
结构是:ID,KEY,VALUE
1 1 Joe 1 2 Smith 1 3 30 2 2 Doe 2 1 John 2 3 20
KEY表示ID的某种属性,在这种情况下,KEY'1'是名字,'2'是姓氏,'3'是年龄。
输出应如下所示:
1 Joe Smith 30 2 John Doe 20
我知道这可以通过相当简单的awk脚本来完成,但我无法在SO或Google上找到它。
答案 0 :(得分:3)
{
a[$1,$2]=$3
if ($1>m) {m=$1}
}
END {
for(i=1;i<=m;i++)
{
j=1
printf i " "
while (a[i,j] != "")
{
printf a[i,j] " "
j++
}
printf "\n"
}
}
答案 1 :(得分:2)
这个awk命令应该可以工作:
awk '$2==1{fn=$3} $2==2{ln=$3} $2==3{age=$3} NR>1 && NR%3==0 {print $1,fn,ln,age}' file
答案 2 :(得分:2)
使用awk
awk '{a[$1]=(a[$1])?a[$1]FS$3:$3}END{for(;x<length(a);)print ++x,a[x]}' <(sort -nk12 file)