由第1列的文件分组

时间:2014-10-15 09:52:04

标签: shell unix awk

我有逗号分隔的3个档案文件,我需要根据第1个库存分组文件 根据第1个文件,如果有超过1行具有相同的第1列值,我需要根据第1列将第2和第3列值组合在一起

示例输入

aplple,shop1,11
aplple,shop2,11
orange,shop7,22
pine,shop8,23
pine,shop9,23
pine,shop11,23
pine,shop15,23

预期产出

aplple
11
shop1
shop2
orange
22
shop7
pine
23
shop9
shop11
shop15

2 个答案:

答案 0 :(得分:2)

这是一个awk解决方案:

awk -F, '{print ($1!=prev?$1RS$3RS$2:$2);prev=$1}' file
aplple
11
shop1
shop2
orange
22
shop7
pine
23
shop8
shop9
shop11
shop15

答案 1 :(得分:0)

Awk解决方案

awk -F, '{x=a[$1" "$3]=a[$1" "$3]?x"\n"$2:$2}END{for(i in a){split(i,b," ");print b[1] RS b[2] RS a[i]}}' file

或者

awk -F, '{x=a[$1"\n"$3]=a[$1"\n"$3]?x"\n"$2:$2}END{for(i in a){ print i RS a[i]}}' file