我需要从文件中的每条记录中获取最后 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
$
Run Code Online (Sandbox Code Playgroud)
我需要的输出:
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,
Run Code Online (Sandbox Code Playgroud)
尝试获取输出
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
Run Code Online (Sandbox Code Playgroud)
我只是得到空行。
由于这将在 bash env 中运行,因此我也欢迎其他解决方案。
请您尝试以下操作:
perl -F, -alne '
for $f (reverse @F) {
$seen{$f}++;
last if (keys %seen) >= 4;
}
print join(",", sort keys %seen);
undef %seen;
' last_cols.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |