码迷,mamicode.com
首页 > 系统相关 > 详细

Linux命令比较文件内容

时间:2019-11-02 00:19:13      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:命令替换   cat   文件中   参数   分隔符   --   文件内容   style   没有   

文件准备

创建两个文件,分别为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命令比较文件内容

标签:命令替换   cat   文件中   参数   分隔符   --   文件内容   style   没有   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!