gpt4 book ai didi

linux - 数据混搭 : Transposing the column into rows based on group in bash

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:41 24 4
gpt4 key购买 nike

我有一个包含 2 列的 tab delim 文件,如下所示

A 123
A 23
A 45
A 67
B 88
B 72
B 50
B 23
C 12
C 14

我想根据第一列的上述数据进行转置,如下所示

A 123 23 45 67
B 88 72 50 23
C 12 14

我尝试了 datamash transpose < input-file.txt但它没有产生预期的输出。

最佳答案

一个 awk 版本:

awk '{printf ($1!=f?"\n%s":" "$2),$0;f=$1}' file

A 123 23 45 67
B 88 72 50 23
C 12 14

使用此版本,您进入空白行,但应该很快并且处理大数据,因为没有使用循环或数组变量。

  • $1!=f?"\n%s":""$2),$0 如果第一个字段不等于 f,打印新行和所有字段
  • 如果$1 = f,只打印字段2。
  • f=$1f 设置为第一个字段

关于linux - 数据混搭 : Transposing the column into rows based on group in bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57777950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com