首页 > 系统服务 > 详细

Linux命令比较文件内容

时间:2019-11-01 23:42:27      阅读:101      评论:0      收藏:0      [点我收藏+]

文件准备

创建两个文件,分别为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

 

Linux命令比较文件内容

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!