質問

ファイル f1、f2 に、1 行に 1 つの数字が含まれる 2 つの数字のリストがあるとします。最初のリストにある数字のうち 2 番目にない数字がいくつあるか、またその逆の数を確認したいと思います。現在、 grep -f f2 -v f1 を使用し、シェルスクリプトを使用してこれを繰り返しています。これはかなり遅いです (二次時間が痛いです)。これを行うより良い方法はありますか?

役に立ちましたか?

解決

私はこの種の「通信」が好きです。 (ファイルはソートする必要があります。)

$ cat f1
1
2
3
$ cat f2
1
4
5
$ comm f1 f2
        1
2
3
    4
    5
$ comm -12 f1 f2
1
$ comm -23 f1 f2
2
3
$ comm -13 f1 f2
4
5
$ 

他のヒント

各番号を1行に入れてから diff (1)しませんか?リストを適切に機能させるために、事前にリストをソートする必要がある場合があります。

特殊なケースでは、 一方のファイルはもう一方のファイルのサブセットです, 、 次の:

cat f1 f2 | sort | uniq -u

行をリストします だけで より大きなファイル。そしてもちろん、への配管 wc -l カウントが表示されます。

ただし、それはあなたが説明したとおりではありません。

このワンライナーは私の特定のニーズによく応えますが、より一般的な解決策が知りたいと思っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top