異なるファイルの2つのフィールドを比較し、順序に関係なく一致する項目のみを返します。

異なるファイルの2つのフィールドを比較し、順序に関係なく一致する項目のみを返します。

File1.txt ファイルが 2 つあります。

Column1    | Column2
username2  | timestamp
username1  | timestamp
username4  | timestamp

ファイル2.txt:

Column1    | Column2
username1  | timestamp
username3  | timestamp
username2  | timestamp

Column1の値と一致する位置を、Column1の内容のみを表示する新しいファイルに出力したいと思います。 Column1 の値は file1.txt と file2.txt の間で常に同じ順序になっているわけではなく、両方のファイルにいくつかの項目がありません。

出力-File3.txt

列 1
ユーザー名 1
ユーザー名 2

答え1

使用awk

awk -F ' *| *' 'NR==FNR{a[$1];next}($1 in a)' file1 file2

配列はa最初の file1 列の内容で埋められます。次のファイルを解析すると、アイテムの配列に一致する行のみが印刷されます。

答え2

両方のファイルから列1を抽出してソートし、重複行を見つけます。

cut -d" " -f1 File1.txt File2.txt | sort | uniq -d

答え3

比較する前に2つのファイルを並べ替えてください。

sort f1 > f1s
sort f2 > f2s
diff f1s f2s

関連情報