【发布时间】:2016-03-02 18:41:45
【问题描述】:
我有 2 个文件。
File1 内容如下:
000000513609200,238/PLMN/000100
000000513609200,238/PLMN/000200
000050354428060,238/PLMN/000200
000050354428060,238/PLMN/000100
001212131415120,238/PLMN/000100
...
...
文件2内容:
000000513609200,238/PLMN/000100
000000513609200,238/PLMN/000200
000050354428060,238/PLMN/000200
000050354428060,238/PLMN/000100
001212131415120,238/PLMN/000100
...
...
File1 有接近 15000 条记录,file2 有接近 20000 条记录。我想找到仅存在于 file1 或 file2 中的行(记录)。我正在使用以下内容:
comm -3 <(sort file1) <(sort file2) > file6
这是一个好的选择吗?
此外,排序如何与这些记录一起工作?它将如何理解将哪一列作为主键?
您还可以建议一个简单的 awk 脚本来比较 file1 和 file2 并将仅存在于 file1 或仅存在于 file2 中的行转发到 file7,以便我可以比较输出。我想确保我的 comm 产生相同的结果。
【问题讨论】:
-
sort没有选项会直接按字母顺序排序。没有字段,没有列。只有字符串要比较。如果还不够好,您可以指定各种 cli 选项。man sort会解释其中的一部分。 -
您的输出文件是否与
file6(或您的文本中的file7)而不是更明显的file3相关?我想知道您是否打算比较两个以上的文件,并希望建立一个只比较 2 个文件的解决方案。 -
注意
comm -3输出中的缩进