Unixの2つの異なるファイル間のデータ比較

Unixの2つの異なるファイル間のデータ比較

2つの異なるファイルがあります。

ファイル1

2
4
6
8
10
12

ファイル2

2
3
5
6
10
12

2つのファイルを比較してファイル1にはあるがファイル2にはない出力データを取得したいと思います。

出力

4
8

以下のコマンドを使用していますが、目的の出力を取得できませんでした。

通信-23ファイル1ファイル2

答え1

正しく機能するには、comm両方のファイルを数値順ではなくアルファベット順に並べる必要があります。comm電話する前にファイルを並べ替えることができます。

sort -o file1 file1
sort -o file2 file2 

それから:

$ comm -23 file1 file2
4
8

commまたは、シェルがプロセス置換をサポートしている場合は、次の呼び出し中にファイルをソートできます。

$ comm -23 <( sort file1 ) <( sort file2 )
4
8

答え2

グレブを使用できます

grep -F -x -f 'File2' -v 'File1'

File2(-f)の固定文字列(-F)のパターン

-x行全体を一致させるために使用されます。それ以外の場合、File1の「0123」はFile2の「12」のために出力から除外されます。

同様の直線を見つけ、(-v) を使用して逆関数を検索します。

関連情報