awk - 使用 awk 将列转置为行

标签 awk

我有一个输入数据文件:

anim   gent
FZ543     1
FZ543     2
FZ543     3
FZ543     1
FZ547     4
FZ547     3
FZ547     3
FZ547     1

我想将这些数据转置为:-
anim     gent
FZ543     1 2 3 1
FZ547     4 3 3 1

换句话说,我想将元素从垂直移到水平。
我可以使用 AWK 命令

感谢您的关注。

最佳答案

awk 'NR==1{print} NR>1{a[$1]=a[$1]" "$2}END{for (i in a){print i " " a[i]}}' file

输出
anim   gent
FZ543  1 2 3 1
FZ547  4 3 3 1

关于awk - 使用 awk 将列转置为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634816/

相关文章:

bash - 在 bash 中使用 awk

bash - 如何将一个文件的列添加到另一个文件

awk - 使用 awk,删除不同索引中具有重复列对的行

bash - 如何使用 AWK 或 SED 在第 N 行之前打印字符串并从第 N 行删除特定字符串

linux - 如何使用 AWK 合并两个文件?

bash - 使用 shell 脚本替换文件中两个特定脚本之间的字符串

linux - 选择一个fasta文件中大于300个aa和 "C"的序列至少出现4次

linux - 在文件中选择一个数字,并且只保留在 linux 中以该数字开头的那些行

macos - Mac OS X 上的 Awk strftime

bash - 使用 awk getline bash 从指定时间范围内的日志文件中提取数据