如何从一个文件中使用shell删除重复项(How to remove duplicates entr

2019-10-16 15:01发布

我有一个文件,该文件的格式为:

0000000540|Q1.1|margi|Q1.1|margi|Q1.1|margi
0099940598|Q1.2|8888|Q1.3|5454|Q1.2|8888    
0000234223|Q2.10|saigon|Q3.9|tango|Q1.1|money

我试图删除出现在同一行的重复。

所以,如果一个行有

0000000540|Q1.1|margi|Q1.1|margi|Q1.1|margi

我会喜欢它是

0000000540|Q1.1|margi

如果该行中

0099940598|Q1.2|8888|Q1.3|5454|Q1.2|8888

我会喜欢它像

0099940598|Q1.2|8888|Q1.3|5454

我想这样做的shell脚本,需要输入文件和文件输出,而不重复。

在此先感谢任何人谁可以帮助

Answer 1:

这应该做到这一点,但可能不是有效的大文件。

awk '
    {
        delete p;
        n = split($0, a, "|");

        printf("%s", a[1]);

        for (i = 2; i <= n ; i++)
        {
                if (!(a[i] in p))
                {
                    printf("|%s", a[i]);
                    p[a[i]] = "";
                }
        }

        printf "\n";
    }
' YourFileName


文章来源: How to remove duplicates entries from a file using shell
标签: shell