1

次の形式のファイルがあります。

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

入力ファイルを受け取り、重複なしでファイルを出力するシェルスクリプトでこれを行いたいと思います。

助けてくれる人に前もって感謝します

4

1 に答える 1

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
于 2012-04-18T00:31:41.980 に答える