我有一个文件:
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