gpt4 book ai didi

perl - 试图从动态 NF 文件中获取最后 4 个不同的值

转载 作者:行者123 更新时间:2023-12-05 08:18:07 25 4
gpt4 key购买 nike

我需要从文件中的每条记录中获取最后 4 个唯一值。文件以逗号分隔,不同记录的列数可以不同。我的输入文件。

$ cat last_cols.txt
F
F,B
F,B,A
F,B,A,F
F,B,A,F,B
F,B,A,F,B,G
F,B,A,F,B,G,E
F,B,A,F,B,G,E,F
F,B,A,F,B,G,E,F,E
F,B,A,F,B,G,E,F,E,B
F,B,A,F,B,G,E,F,E,B,A
F,B,A,F,B,G,E,F,E,B,A,D
F,B,A,F,B,G,E,F,E,B,A,D,F
F,B,A,F,B,G,E,F,E,B,A,D,F,E
F,B,A,F,B,G,E,F,E,B,A,D,F,E,E
F,B,A,F,B,G,E,F,E,B,A,D,F,E,E,D
$

我需要的输出:

F,
B,F,
A,B,F,
A,B,F,
A,B,F,
A,B,F,G,
B,E,F,G,
B,E,F,G,
B,E,F,G,
B,E,F,G,
A,B,E,F,
A,B,D,E,
A,B,D,F,
A,D,E,F,
A,D,E,F,
A,D,E,F,

尝试获取输出

 awk -F, ' { split("",arr); for(i=NF;i>0;i--) { if(!$i in arr && length(arr)<4 ) arr[$i]=1 }; for(i in arr) printf("%s,",i); print "" } ' last_cols.txt

我只是得到空行。

由于这将在 bash 环境中运行,我也欢迎其他解决方案。

最佳答案

请您尝试以下操作:

perl -F, -alne '
for $f (reverse @F) {
$seen{$f}++;
last if (keys %seen) >= 4;
}
print join(",", sort keys %seen);
undef %seen;
' last_cols.txt

关于perl - 试图从动态 NF 文件中获取最后 4 个不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65299219/

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