Awk 转置直到;";将第列转换为第行:

Awk 转置直到;";将第列转换为第行:,awk,Awk,我想每第三列将列转置到行 Input.txt Name Age Place aa 22 xx bb 33 yy cc 44 zz .... .... 期望输出 Name,Age,Place aa,22,xx bb,33,yy cc,44,zz 我在命令下试过了,完全失败了 awk ' { for(c = 1; c <= NR; c++) { a[c]=$c } } END { for(r = 1; r <= NR; r++) { for(t = 1; t &

我想每第三列将列转置到行

Input.txt

Name
Age
Place
aa
22
xx
bb
33
yy
cc
44
zz
....
....
期望输出

Name,Age,Place
aa,22,xx
bb,33,yy
cc,44,zz
我在命令下试过了,完全失败了

awk '
{
  for(c = 1; c <= NR; c++)    { a[c]=$c }
}
END {
  for(r = 1; r <= NR; r++) {
    for(t = 1; t <= 3; t++) {
      printf("%s ", a[c])
    }
    print ","
  }
}'  Input.txt
awk'
{

对于(c=1;c来说,有很多很好的工具可以实现这一点

这太糟糕了! 当行不是3的倍数时,它将输出字段分隔符设置为
。这样,它将连接每一组3行

更多信息请访问

参数代换 这将连接每3个输入,并使用分隔符
作为分隔符


关于转置本身,我不久前在:

转置(){

awk'{for(i=1;i有很多很好的工具用于此

这太糟糕了! 当行不是3的倍数时,它将输出字段分隔符设置为
。这样,它将连接每一组3行

更多信息请访问

参数代换 这将连接每3个输入,并使用分隔符
作为分隔符


关于转置本身,我不久前在:

转置(){

awk'{for(i=1;i有很多很好的工具用于此

这太糟糕了! 当行不是3的倍数时,它将输出字段分隔符设置为
。这样,它将连接每一组3行

更多信息请访问

参数代换 这将连接每3个输入,并使用分隔符
作为分隔符


关于转置本身,我不久前在:

转置(){

awk'{for(i=1;i有很多很好的工具用于此

这太糟糕了! 当行不是3的倍数时,它将输出字段分隔符设置为
。这样,它将连接每一组3行

更多信息请访问

参数代换 这将连接每3个输入,并使用分隔符
作为分隔符


关于转置本身,我不久前在:

转置(){
awk'{for(i=1;i
$ awk 'ORS=NR%3?",":RS' file
Name,Age,Place
aa,22,xx
bb,33,yy
cc,44,zz
$ xargs -n3 <file
Name Age Place
aa 22 xx
bb 33 yy
cc 44 zz
$ paste -d"," - - - <file
Name,Age,Place
aa,22,xx
bb,33,yy
cc,44,zz
transpose () {
  awk '{for (i=1; i<=NF; i++) a[i,NR]=$i; max=(max<NF?NF:max)}
        END {for (i=1; i<=max; i++)
              {for (j=1; j<=NR; j++) 
                  printf "%s%s", a[i,j], (j<NR?OFS:ORS)
              }
        }'
}