Linux命令比较文件内容

文件准备

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

a.txt b.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.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-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

原文地址:https://www.cnblogs.com/xiaoxi666/p/11780114.html

时间: 2024-10-10 18:13:12

Linux命令比较文件内容的相关文章

linux命令之文件内容查阅命令——od

名称:od 位置:/usr/bin/od 权限:所有用户 作用:非纯文本文件内容查阅,例如二进制文件内容查阅 用法:od  [-t   TYPE]  文件 -t 后面可以接各种类型(TYPE)的的输出 a :理由默认的字符来输出 c :利用ASCII字符输出 d[size] : 利用十进制来输出数据,每个整数占size个bytes f[size] :  利用浮点数来输出数据,每个整数占size个bytes o[size] : 利用八进制来输出数据,每个整数占size个bytes x[size]

linux命令之文件内容定位:sed、uniq命令

sed命令 1.sed -n '2'p  file 只打印 file 文件的第二行. 2.sed -n '1,4'p file 只打印从第一行到第四行得记录. 3.sed -n '/los/'p file 打印匹配los的行. 4.sed -n '4,/los/'p file 打印从第四行到匹配los的之间的所有行. 5.sed '1,2'd file 把第一行和第二行全部删除. uniq命令 1.uniq -c file 打印紧挨的重复行出现的次数. 2.uniq -d file 只打印重复的

linux命令查询文件内容

1.查询文件里的某一行 sed -n '1000p'  1.txt       --查询1.txt的第1000行 2.查询1到5行 sed -n '1,5p'  1.txt   ---查询1.txt的第1行到第5行 3.查看最后1000行的数据 cat filename | tail -n 1000 4.查看1000到3000行的数据 cat filename | head -n 3000 | tail -n +1000 cat filename          --- 显示文件所有内容 ta

linux命令---查找文件中的内容

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

linux查看日志文件内容命令tail、cat、tac、head、echo详解

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -

[转]linux查看日志文件内容命令

linux查看日志文件内容命令tail.cat.tac.head.echo tail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C, ---------------------------linux 如何显示一个文件的某几行(中间几行) 从第3000行开始,显示1000行.即显示3000~3999行cat filename | tail -n +3000 | head -n 1000 显示1000行到3000行cat filename| head -

Linux命令:修改文件权限命令chmod、chgrp、chown详解

Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作.可执行权限表示允许将该文件作为一个程序执行.文 件被创建时,文件所有者自动拥有对该文件的读.写和可执行权限,以便于对文件的阅读和修改.用户也可根据需要把访问权限设置为需要的任何组合. 有三种不同类型的用户可对文件或目录进行访问:文件所有者,同组用户.其他用户.所有者一般是文

linux命令之——文件搜索命令

linux命令之——文件搜索命令 文件搜索命令:find 命令所在路径: /bin/find 执行权限 : find [搜索范围][匹配条件] 功能描述: 文件搜索 $find /etc -name init???  (相当于模糊搜素    *init*         *匹配任意字符   ?匹配单个字符) 在目录/etc中查找文件init -iname不区分大小写 $find / -size +204800 在根目录下查找大于100M的文件 +n 大于 -n 小于 n 等于 $find /ho

Linux命令之文件同步、定时备份 -rsync,cron,crontab

一.rsync介绍(可忽略) Rsync(remote synchronize)是一个远程文件同步工具; Rsync使用"Rsync算法"来同步文件,该算法只传送两个文件的不同部分,因此速度相当快; Rsync是替代rcp的一个工具,目前由rsync.samba.org维护,因而rsync.conf文件的格式类似于samba的主配置文件; Rsync可通过rsh或ssh使用,也能以daemon模式运行,以daemon方式运行时,Rsync Server会打开一个873端口等待客户端连接