相同字段多行合并为一行
本帖最后由 hgx126 于 2021-03-30 17:19 编辑张三 语文 74 A
张三 物理 83 B
张三 数学 93 C
张三 化学 91 D
李四 物理 74 A
李四 数学 84 B
李四 语文 94 C
以姓名字段,将相同姓名的多行合并成一行,结果如下:
张三 语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四 物理 74 A 数学 84 B 语文 94 C
求命令。谢谢
回复 1# hgx126
$ cat file
张三 语文 74 A
张三 物理 83 B
张三 数学 93 C
张三 化学 91 D
李四 物理 74 A
李四 数学 84 B
李四 语文 94 C
$ awk '{name=$1;$1="";score=$0;a=a?a""score:score}END{for(n in a)print n,a}' file
张三语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四物理 74 A 数学 84 B 语文 94 C
$
$ cat file
张三 语文 74 A
张三 物理 83 B
张三 数学 93 C
张三 化学 91 D
李四 物理 74 A
李四 数学 84 B
李四 语文 94 C
$ awk '{name=$1;$1="";score=$0;a=a?a""score:score}END{for(n in a)print n,a}' file
张三语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四物理 74 A 数学 84 B 语文 94 C
$ $ cat file
张三 语文 74 A
张三 物理 83 B
张三 数学 93 C
张三 化学 91 D
李四 物理 74 A
李四 数学 84 B
李四 语文 94 C
$ awk '{name=$1;$1="";score=$0;a=a?a""score:score}END{for(n in a)print n,a}' file
张三语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四物理 74 A 数学 84 B 语文 94 C
$ 回复 1# hgx126
$ awk '{name=$1;$1="";score=$0;a=a?a""score:score}END{for(n in a)print n,a}' file
张三语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四物理 74 A 数学 84 B 语文 94 C
$ cat file
张三 语文 74 A
张三 物理 83 B
张三 数学 93 C
张三 化学 91 D
李四 物理 74 A
李四 数学 84 B
李四 语文 94 C
$ awk '{name=$1;$1="";score=$0;a=a?a""score:score}END{for(n in a)print n,a}' file
张三语文 74 A 物理 83 B 数学 93 C 化学 91 D
李四物理 74 A 数学 84 B 语文 94 C
$
awk '{a[$1]=a[$1]" "$2" "$3" "$4}END{for(i in a)print i,a}' file
页:
[1]