复制行中每个单元格的标题

复制行中每个单元格的标题

我有一个文件:

AC  AF  AN
3   0.375   8
3   0.375   8

我想要的输出为:

AC  AF  AN
AC=3    AF=0.375    AN=8
AC=3    AF=0.375    AN=8

有没有unix命令可以做到这一点?

答案1

awk '
  NR==1 {split($0,a); $1=$1} 
  NR>1 {for(i=1;i<=NF;i++) $i=a[i]"="$i} 
  1' OFS='\t' yourfile

解释:

  • 根据默认的字段分隔符将第一条记录(标题行)拆分为数组;重新分配$1,以便使用新的输出字段分隔符写入记录
  • 对于其余记录,循环遍历字段,在每个字段值前面添加与字段索引对应的数组元素,并用=
  • 以制表符作为输出字段分隔符打印记录

答案2

< yourfile \
   perl -pale '
      $. == 1 and push(@A,@F),next;
      $_ = join $", map { "$A[$_]=$F[$_]" } 0..$#F;
   ' |
 column -t

答案3

NR == 1 {
    for (i = 1; i <= NF; i++) {
        header[i] = $i
        printf "%s\t", $i
    }
    print ""
}

NR > 1 {
    for (i = 1; i <= NF; i++) {
        printf "%s=%s\t", header[i], $i
    }
    print ""
}

1.创建一个名为awkprog并将上面的内容粘贴进去。
2.假设你的文件名是数据.txt
3.然后,运行awk -f awkprog data.txt

相关内容