美文网首页
linux 上获取文件中相同部分、不相同部分的优雅方式

linux 上获取文件中相同部分、不相同部分的优雅方式

作者: 秸秆混凝烧结工程师 | 来源:发表于2023-05-14 15:26 被阅读0次

    在 Linux 中,可以使用 comm 命令来比较两个文件并列出它们之间的差异。comm 命令需要两个已经排过序的文件作为输入,并可以输出它们之间相同行、不同行以及仅在其中一个文件中的行,具体如下:

    comm [option] file1 file2
    其中,option 参数可以是以下三个选项之一:

    -1:禁止输出仅在文件 1 中存在的行。
    -2:禁止输出仅在文件 2 中存在的行。
    -3:禁止输出同时出现在两个文件中的行。
    如果没有指定任何选项,则 comm 命令会同时输出三个部分:只出现在文件 1 中的行、只出现在文件 2 中的行以及同时出现在两个文件中的行。

    接下来我们分别列出两个文件之间相同和不相同的部分。

    假设有两个文件 file1 和 file2,它们的内容分别如下:

    $ cat file1
    apple
    pear
    orange
    banana
    grape

    $ cat file2
    apple
    peach
    orange
    watermelon
    相同部分
    要输出两个文件之间相同的部分(即只包含同时出现在两个文件中的行),可以执行以下命令:

    comm -12 <(sort file1) <(sort file2)
    命令说明:

    <:将一个命令的输出作为另一个命令的输入。
    sort:按字典序排列文件内容。
    -12:仅输出同时出现在两个文件中的行。
    运行结果如下:

    apple
    orange
    不相同部分
    要输出两个文件之间不相同的部分,可以执行以下命令:

    comm -3 <(sort file1) <(sort file2)
    命令说明:

    -3:同时输出不同的行和仅出现在一个文件中的行。
    运行结果如下:

    banana
    grape
    peach
    watermelon
    其中,以 TAB 键开头的行表示只在某个文件中出现的行。

    相关文章

      网友评论

          本文标题:linux 上获取文件中相同部分、不相同部分的优雅方式

          本文链接:https://www.haomeiwen.com/subject/drepsdtx.html