按列的值将多行合并为单行

Jia*_*guo 6 python perl split

我有一个非常大的制表符分隔的文本文件.文件中的许多行对于文件中的一列具有相同的值.我想把它们放在同一行.例如:

a foo
a bar
a foo2
b bar
c bar2
Run Code Online (Sandbox Code Playgroud)

运行脚本后,它应该成为:

a foo;bar;foo2
b bar
c bar2
Run Code Online (Sandbox Code Playgroud)

我怎样才能在shell脚本或Python中执行此操作?

谢谢.

Sai*_*Sai 3

使用 awk 你可以尝试这个

{   a[$1] = a[$1] ";" $2 }
END { for (item in a ) print item, a[item] }
Run Code Online (Sandbox Code Playgroud)

因此,如果您将此 awk 脚本保存在名为 awkf.awk 的文件中,并且输入文件是 ifile.txt,请运行该脚本

awk -f awkf.awk ifile.txt | sed 's/ ;/ /'
Run Code Online (Sandbox Code Playgroud)

sed 脚本的作用是删除前导 ;

希望这可以帮助