zoukankan      html  css  js  c++  java
  • Linux命令比较文件内容

    文件准备

    创建两个文件,分别为a.txt和b.txt,它们所含内容分别为:

    a.txtb.txt
    1-wfhune
    2-chdamnsbchj
    3-uyr92fiubkqw
    5-cgvdnsb
    2-djyv
    4-dvcahsgdb
    5-wvchdfyt

    普通用法,整行对比

    命令diff a.txt b.txt grep -f a.txt b.txtgrep -vf a.txt b.txt
    解释 比较两个文件 取两个文件中都有的行 取b文件中有,但a文件中没有的行
    结果 1,4c1,3
    < 1-wfhune
    < 2-chdamnsbchj
    < 3-uyr92fiubkqw
    < 5-cgvdnsb
    ---
    > 2-djyv
    > 4-dvcahsgdb
    2-djyv
    4-dvcahsgdb
    5-wvchdfyt

    高级用法,每行关键部分对比

    回顾一下两个文件中的内容,格式都是 x-yyyy这种格式,我们认为x为键,yyyy为值。现在我们只想比较x,而不关心yyyy。

    该怎么办呢?

    命令grep -vf <(cut -d - -f 1 a.txt) <(cat b.txt)grep -vf <(awk -F"-" '{print $1}' a.txt) <(cat b.txt)
    解释

    <() 用于命令嵌套。
    cut -d - -f 1 a.txt,其中参数-d 用于定义分隔符,参数-f 用于定义分割后要提取第几段文本。比如这里定义分隔符为"-",并提取分割后的第一段文本。

    这里只是用awk命令替换了cut命令,作用相同。
    awk 的 -F参数用于定义分隔符,printf $X 提取分割后的第X段文本。
    结果 4-dvcahsgdb 4-dvcahsgdb
  • 相关阅读:
    java实现亲密数
    java实现亲密数
    java实现亲密数
    java实现亲密数
    java实现坐标
    java实现坐标
    java实现坐标
    java实现坐标
    java实现坐标
    spring中注解注入 context:component-scan 的使用说明
  • 原文地址:https://www.cnblogs.com/xiaoxi666/p/11780114.html
Copyright © 2011-2022 走看看