• mac 比较两个文件


    比较两个文件,输出两个文件都有的行,可以

    1.使用comm命令

    如下例:

    ------------------->$ cat 1s1.txt
    line 0
    line 1
    line 1
    line 2
    line 3
    line 4
    
    
    ------------------->$ cat 1s2.txt
    line 1
    line 3
    line 3
    line 6
    
    
    ------------------->$ comm 1s1.txt 1s2.txt
    line 0
                     line 1
    line 1
    line 2
                     line 3
            line 3
    line 4
            line 6

    comm命令会输出三列,第一列为第一个文件单有的行,第二列为第二个文件单有的行,第三列为公有的行。另如果有重复行,并不算一行来区分。

    看comm的用法:

    ------------------->$ comm -h
    comm: illegal option -- h
    usage: comm [-123i] file1 file2

    可以选择输出那一列,比如输出第三列,需要使用-12,注意,不显示那一列,就把该列加到命令中去:

    ------------------->$ comm -3 1s1.txt 1s2.txt
    line 0
    line 1
    line 2
           line 3
    line 4
           line 6
    
    
    ------------------->$ comm -12 1s1.txt 1s2.txt
    line 1
    line 3

    如果想去重可以使用命令:

    sort test.txt | uniq

    2.使用grep命令

    ------------------->$ grep -f 1s1.txt 1s2.txt
    line 1
    line 3
    line 3
    
    
    ------------------->$ grep -f 1s2.txt 1s1.txt
    line 1
    line 1
    line 3
    
    
    ------------------->$ grep -f 1s1.txt 1s2.txt && grep -f 1s2.txt 1s1.txt
    line 1
    line 3
    line 3
    line 1
    line 1
    line 3

    3.uniq命令

    先将两个文件分别去重,再组合到一起,那么两个文件都有的行 在组合文件中会有两行,通过uniq显示重复行可以打印公有部分。

    命令参数:

    -c或——count:在每列旁边显示该行重复出现的次数;
    -d或--repeated:仅显示重复出现的行列;
    -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;
    -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;
    -u或——unique:仅显示出一次的行列;
    -w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。
  • 相关阅读:
    在Chrome浏览器中保存的密码有多安全?
    进程上下文切换 – 残酷的性能杀手(上)
    进程上下文切换 – 残酷的性能杀手(下)
    javascript推荐书籍
    使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
    Source Insight 3.X 标签插件v1.0发布
    QQ空间自动发广告解决方法
    Java---实力弹弹球,弹弹弹
    HDOJ 2027 统计元音
    Java---计算机贷款支付额计算(用对话框实现)
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/9535774.html
Copyright © 2020-2023  润新知