hgx126 发表于 2021-03-30 17:16

相同字段多行合并为一行

本帖最后由 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




求命令。谢谢

bikkuri 发表于 2021-03-31 04:07

回复 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
$

bikkuri 发表于 2021-03-31 04:08

$ 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
$

bikkuri 发表于 2021-03-31 04:09

$ 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
$

bikkuri 发表于 2021-03-31 10:37

回复 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
$

baby_神 发表于 2021-03-31 14:58

awk '{a[$1]=a[$1]" "$2" "$3" "$4}END{for(i in a)print i,a}' file
页: [1]
查看完整版本: 相同字段多行合并为一行