我正在尝试根据一行中的第一个值连接行。我的文件如下所示:
结构为:ID、KEY、VALUE
1 1乔 1 2 史密斯 1 3 30 2 2 母鹿 2 1 约翰 2 3 20
KEY 代表 ID 的某种属性,在这种情况下,KEY '1' 是名字,'2' 是姓氏,'3' 是年龄。
输出应如下所示:
1乔·史密斯30 2 约翰·多伊 20
我知道这可以通过相当简单的 awk 脚本来完成,但我无法在 SO 或 Google 上找到它。
我正在尝试根据一行中的第一个值连接行。我的文件如下所示:
结构为:ID、KEY、VALUE
1 1乔 1 2 史密斯 1 3 30 2 2 母鹿 2 1 约翰 2 3 20
KEY 代表 ID 的某种属性,在这种情况下,KEY '1' 是名字,'2' 是姓氏,'3' 是年龄。
输出应如下所示:
1乔·史密斯30 2 约翰·多伊 20
我知道这可以通过相当简单的 awk 脚本来完成,但我无法在 SO 或 Google 上找到它。
{
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"
}
}
这个 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
一种方式awk
awk '{a[$1]=(a[$1])?a[$1]FS$3:$3}END{for(;x<length(a);)print ++x,a[x]}' <(sort -nk12 file)