如何按列对脚本进行排序并删除重复的脚本

Bla*_*tal 0 awk text-processing sort datamash

我有一个将近 2000 行的文件。文件格式是这样的:

12 34
0 2
2 3
7 9
1 2
306 237
0 9
12 134
2 7
2 9
306 3
  
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个 bash 脚本来删除重复的第一列并按第二列进行组织。我希望这个输出:

0 2 9 
1 2
2 3 7 9
7 9 
12 34 134
306 237 3
Run Code Online (Sandbox Code Playgroud)

我尝试了一些代码,但没有得到所需的输出。我怎样才能做到这一点,我应该使用什么?

小智 5

您可以使用sortuniq删除重复的行,然后使用awk由第一列值索引的数组,然后每第二列附加到数组的每个值,例如:

sort test.txt | uniq | awk '{if(col[$1])col[$1]=col[$1]" "$2; else col[$1]=$2;}; END{for (i in col) print i, col[i]}'
Run Code Online (Sandbox Code Playgroud)

作为test.txt您的输入文件。

请注意,在将新列添加到数组的正确值之前,您必须检查数组是否为空,只需在值之间添加空格即可。