专栏首页xiaoxi666的专栏Linux命令比较文件内容

Linux命令比较文件内容

文件准备

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

a.txt

b.txt

1-wfhune2-chdamnsbchj3-uyr92fiubkqw5-cgvdnsb

2-djyv4-dvcahsgdb5-wvchdfyt

普通用法,整行对比

命令

diff a.txt b.txt

grep -f a.txt b.txt

grep -vf a.txt b.txt

解释

比较两个文件

取两个文件中都有的行

取b文件中有,但a文件中没有的行

结果

1,4c1,3< 1-wfhune< 2-chdamnsbchj< 3-uyr92fiubkqw< 5-cgvdnsb---> 2-djyv> 4-dvcahsgdb

2-djyv4-dvcahsgdb5-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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • char数组中除去某个元素

    xiaoxi666
  • 你真的理解Java中的try/catch/finally吗?

    上面这几个例子,大多数人已经非常了解。同时也衍生出一些理论,比如不要在finally中return等,不再赘述。

    xiaoxi666
  • 状态机编程思想(1):括号内外字符串统计

    我们拿到这个问题时,第一感觉往往是顺序遍历字符串,并检测左右相邻字符是否满足边界条件,从而进行分支处理。但是这样做有以下棘手之处:

    xiaoxi666
  • linux学习第二十三篇:shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向

    shell介绍 什么是shell, shell是一个命令解释器,提供用户和机器之间的交互。支持特定语法,比如逻辑判断、循环。每个用户都可以有自己特定的shel...

    用户1215343
  • 命令行通配符教程

    一次性操作多个文件时,命令行提供通配符(wildcards),用一种很短的文本模式(通常只有一个字符),简洁地代表一组路径。

    ruanyf
  • 对比文件内容

    苦咖啡
  • 6千万词汇的巨型汉语词库

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 算法+语料≈NLP 这是一个六千万词...

    昱良
  • Linux常用命令(一)

    cd /demo/set 表示切换到/demo/set路径下。 cd logs 表示切换到logs路径下。 cd / 表示切换到根目录。 cd ../ 表示切换...

    乔千
  • 反爬虫我从 Robots.txt 配置开始

    基本上,所有公开你能访问到的网站都有 Robots.txt。可能只是你没有注意到而已,比如淘宝的:https://www.taobao.com/robots.t...

    业余草
  • linux-两个文件求交集、并集、差集

    (用sort将a.txt b.txt文件进行排序,uniq使得两个文件中的行唯一,使用-d输出两个文件中次数大于1的内容,即是得到交集)

    阿凡亮

扫码关注云+社区

领取腾讯云代金券