1

次のような2つのファイルがあります。

1
2
3
4
5
6
7
8
9
10

および2列のファイル

1 0.11
2 0.12748
5 0.45
12 0.48
7 0.48
8 0.7
13 0.78
14 0.88

2 つのファイルの類似点を見つけたいと思います。両方のファイルで、ファイル 1 の番号がファイル 2 の最初の列にも表示される場合は、出力ファイルに表示される必要があることを意味します。出力は次のようになります。

1 0.11
2 0.12748
5 0.45
7 0.48
8 0.7

grep のさまざまな組み合わせで試しましたが、うまくいきません。

4

2 に答える 2

5

grep -f patt_file fileファイルからパターンを取得するために使用できます。つまり、 にfile含まれるパターンで検索しますpatt_file

指定された入力で出力を確認します。

$ grep -w -f file1 file2
1 0.11
2 0.12748
5 0.45
7 0.48
8 0.7

からman grep:

-f ファイル、 --file=ファイル

FILE からパターンを 1 行に 1 つずつ取得します。このオプションを複数回使用するか、-e (--regexp) オプションと組み合わせて使用​​する場合は、指定されたすべてのパターンを検索します。空のファイルにはパターンが含まれていないため、何にも一致しません。

于 2013-06-10T16:02:55.523 に答える
4

awk を使用:

awk 'NR==FNR{a[$1]++;next}$1 in a' test.1 test.2

最初のファイルにある行を配列に書き留めてから、最初のファイルにあった行を 2 番目のファイルに出力します。行は、2 番目のファイルに表示される順序で出力に表示されます。

または参加:

join <(sort test.1) <(sort test.2)

ファイルはソートする必要があります。行は辞書順に表示されます。

于 2013-06-10T16:05:04.210 に答える