gpt4 book ai didi

awk - 使用 AWK 整理文件

转载 作者:行者123 更新时间:2023-12-04 22:18:14 26 4
gpt4 key购买 nike

好吧,我有以下文件:

Progeny Sire    Dam    Sex  PENAS       P35         P41
13254 11908 11421 M 47.275811 1322.828674 1719.183748
13323 11335 11386 M 43.29896 1225.57111 1634.436447
13562 11864 11895 M 47.884191 1228.568357 1615.427502
13338 11335 11970 M 45.780973 1196.32757 1561.900145

我需要转置 PENAS、P35 和 P41 列。这些列将成为新列:年龄。从视觉上看,我需要该文件是这样的:
Progeny Sire    Dam     Sex AGE     Peso
13254 11908 11421 M PENAS 47.275811
13254 11908 11421 M P35 1322.828674
13254 11908 11421 M P41 1719.183748
13323 11335 11386 M PENAS 43.29896
13323 11335 11386 M P35 1225.57111
13323 11335 11386 M P41 1634.436447
13562 11864 11895 M PENAS 47.884191
13562 11864 11895 M P35 1228.568357
13562 11864 11895 M P41 1615.427502
13338 11335 11970 M PENAS 45.780973
13338 11335 11970 M P35 1196.32757
13338 11335 11970 M P41 1561.900145

我试过这个命令,但没有用:
awk 'NR==1{h=$1 OFS $2 OFS $3 OFS $4 OFS $5 OFS $6 OFS $7; next}
{a[$2]=(($1 in a)?(a[$1] OFS $NF):(OFS $5 OFS $6 OFS $7 OFS "AGE"));
if(!($7 in b)) {h=h OFS $7; b[$7]}}
END{print h; for(k in a) print k,a[k]}' a.txt | column -t > b

我被困在这一点上,有什么建议吗?谢谢。
请注意,我原来的 daset 有 1400 行。

最佳答案

这是另一个 awk ,不依赖于列数......

$ awk 'NR==1{n=split($0,h); 
for(i=1;i<=NF-3;i++) printf "%s", $i OFS;
printf "%s\n", "AGE" OFS "Peso"; next}
{split($0,p);
NF--;
for(i=1;i<=3;i++)
{$(NF-1)=h[NF-2+i];
$NF=p[NF-2+i];
print}}' file | column -t


Progeny Sire Dam Sex AGE Peso
13254 11908 11421 M PENAS 47.275811
13254 11908 11421 M P35 1322.828674
13254 11908 11421 M P41 1719.183748
13323 11335 11386 M PENAS 43.29896
13323 11335 11386 M P35 1225.57111
13323 11335 11386 M P41 1634.436447
13562 11864 11895 M PENAS 47.884191
13562 11864 11895 M P35 1228.568357
13562 11864 11895 M P41 1615.427502
13338 11335 11970 M PENAS 45.780973
13338 11335 11970 M P35 1196.32757
13338 11335 11970 M P41 1561.900145

关于awk - 使用 AWK 整理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690799/

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