从文件bash工具中删除列

gwa*_*arr 1 linux bash awk

我有一个包含大约200,000列和大约5000行的大文件.以下是该文件的简短示例,其中第1列和第5列重复.

Abf Bgj Csd Daa Abf Efg ...  
0   1   2   1   0   1.1   
2   0.1 1.2 0.3 2   1    
...  
Run Code Online (Sandbox Code Playgroud)

这是我需要的结果的一个例子.原始文件中的第5列已被删除.

Abf Bgj Csd Daa Efg ...  
0   1   2   1   1.1    
2   0.1 1.2 0.3 1      
...  
Run Code Online (Sandbox Code Playgroud)

有些列重复多次.我需要使用bash工具从数据中删除重复项(保留第一个实例).我无法对数据进行排序,因为我需要保留订单.

Ed *_*ton 5

$ cat tst.awk
NR==1 {
    for (i=1;i<=NF;i++) {
        if (!seen[$i]++) {
            f[++nf]=i
        }
    }
}
{
    for (i=1;i<=nf;i++) {
        printf "%s%s", $(f[i]), (i<nf?OFS:ORS)
    }
}

$ awk -f tst.awk file | column -t
Abf  Bgj  Csd  Daa  Efg
0    1    2    1    1.1
2    0.1  1.2  0.3  1
Run Code Online (Sandbox Code Playgroud)