ファイル f1、f2 に 2 つの数値リストがあり、それぞれの数値が 1 行に 1 つずつあるとします。最初のリストで 2 番目のリストにない数と、その逆の数を確認したい。現在、grep -f f2 -v f1 を使用してから、シェル スクリプトを使用してこれを繰り返しています。これはかなり遅いです (二次時間が痛い)。これを行うより良い方法はありますか?
8375 次
3 に答える
8
こういうのは「comm」が好きです。(ファイルはソートする必要があります。)
$ 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
$
于 2009-10-21T15:15:53.960 に答える
2
それぞれの数字を 1 行にまとめてdiff
(1) 入れていただけないでしょうか? 適切に機能させるためには、事前にリストをソートする必要があるかもしれません。
于 2009-10-21T11:35:44.640 に答える
1
1 つのファイルが他のファイルのサブセットである特殊なケースでは、次のようになります。
cat f1 f2 | sort | uniq -u
大きなファイルの行のみをリストします。そしてもちろん、にパイプするwc -l
とカウントが表示されます。
しかし、それはまさにあなたが説明したものではありません。
このワンライナーは私の特定のニーズに頻繁に対応しますが、より一般的な解決策を見たいと思っています。
于 2009-10-21T12:08:40.030 に答える