比较不同文件中的 2 个字段,并且仅返回匹配项,无论顺序如何

比较不同文件中的 2 个字段,并且仅返回匹配项,无论顺序如何

我有 2 个文件 File1.txt:

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

在比较之前对两个文件进行排序

sort f1 > f1s
sort f2 > f2s
diff f1s f2s

相关内容