关键参数
grep -f  --file=FILE  从 FILE 中取得 PATTERN
语法
grep -f file1 file2

从file2中过滤出包含file1的任意行的行,最终结果得到的是file2中的部分内容,什么意思呢,举个例子就明白了。

举例

file1是a.txt,内容如下:

[root@localhost shell]# cat a.txt
111
222
aaa
vvv
root
/bin/bash
[root@localhost shell]#

file2是/etc/passwd,内容如下:

[root@localhost shell]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
huanzi:x:500:500:huanzi:/home/huanzi:/bin/bash
user1:x:501:501::/home/user1:/bin/bash
[root@localhost shell]# 

执行结果如下:

[root@localhost shell]# grep -f a.txt /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
huanzi:x:500:500:huanzi:/home/huanzi:/bin/bash
user1:x:501:501::/home/user1:/bin/bash
[root@localhost shell]#

能看出来,/etc/passwd中包含root和/bin/bash的行都被过滤了出来。

取反对比
grep -vf file1 file2

解释:过滤出file2中不包含file1任意行的行,最终结果是file2的部分内容。比较拗口,继续举例。

举例
[root@localhost shell]# cat a.txt
111
222
aaa
vvv
root
/bin/bash
qq
[root@localhost shell]# cat b.txt
aaa
root
qqq
www
1234545
11
[root@localhost shell]# grep -vf a.txt b.txt     //b.txt中有,但是a.txt中没有的那些内容,最终结果是b的部分内容
www
1234545
11
[root@localhost shell]# grep -vf b.txt a.txt     //a.txt中有,但是b.txt中没有的那些内容,最终结果是a的部分内容
222
vvv
/bin/bash
qq
[root@localhost shell]#
继续扩展

上面可以看到,a.txt中的qq和b.txt中的qqq匹配到一起了(b中的11和a中的111也匹配了),要精准匹配,加上以下参数。

grep -w

w的意思是word,要严格匹配,一字不差。

举例
[root@localhost shell]# grep -vwf a.txt b.txt
qqq
www
1234545
11
[root@localhost shell]# grep -vwf b.txt a.txt
111
222
vvv
/bin/bash
qq
[root@localhost shell]#

感谢各位大佬查看,欢迎积极指正。

grep比对两个文件的差异相关推荐

  1. diff 比较两个文件的差异

    功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对 ...

  2. linux两文件对比,linux对比两个文件的差异

    在项目维护阶段,经常会对垃圾文件进行清理.比如没有在数据库中的文件进行删除,这个时候最好的选择就是使用shell命令了:废话不多说直接上代码: 1.首先准备好从数据表导出来的数据,方法随意 2.在服务 ...

  3. linux 比较两个文件的差异

    本文目录 linux 比较两个文件的差异 meld linux 比较两个文件的差异 一般来说在开发的时候,维护两个文件版本显然要比在文件中做一个if-else更加复杂:当你升级其中一个文件的时候,另一 ...

  4. 两个文件内容差异对比,

    比较两个单行文件的方法就我知道的而言有4种 用diff 用grep 用comm 用uniq [root@hxy ~]# echo "`seq 5`" >file1;cat f ...

  5. 如何使用 notepad++ 对两个文件比较差异

    Notepad++,也叫npp,是一款类似于记事本的开源小软件.体积小.资源占用小,支持众多程序语言,比如C++.C#.Java .支持 HTML.XML.ASP,Perl.Python.JavaSc ...

  6. linux比较10个文件是否一致,Linux中文件管理--cmp--比较两个文件是否有差异

    cmp命令用于比较两个文件是否有差异,当相互比较的两个文件完全一样时,则该命令不会显示任何信息.若发现有所差异,预设会标示出第一个不同之处的字符和列数编号.若不指定任何文件名称或是所给予的文件名为&q ...

  7. 找出两个文件内容的相同与不同

    此文略有自己改动(DOOM) 1  comm命令 在我们的开发和运营中,特别是对业务进行监控的时候,我们常常需要写一些监控shell脚本,而这些脚本需要求两个文件的共同的记录列表或者只出现在第一个文件 ...

  8. 使用Notepad++比较文件的差异

    有时候需要比较两个文件的差异部分,如果不在git里可以使用Notepad++的插件. 在Notepad++中安装Compare插件 打开NotePad++,点击工具栏上的插件--Plugin Mana ...

  9. Notepad++如何对比文件 Notepad++对比两个文件代码方法

    大家在使用Notepad++的时候,需要对编辑的两个文件进行比较,找出两个文件代码的区别,快速进行编辑修改,那么Notepad++如何对比文件,下面小编就给大家带来Notepad++对比两个文件代码方 ...

最新文章

  1. 立足GitHub学编程:13个不容错过的Java项目
  2. boost function对象
  3. 腾讯2020校园招聘----逆序对
  4. js生成二维码 中间有logo
  5. 华三交换机配置access命令_H3C交换机配置命令大全讲解
  6. Mstar的Monitor方案OSD 菜单制作(三)——添加字符串文字
  7. 洛谷P1195 口袋的天空
  8. 基于Lua的游戏服务端框架简介
  9. 影视动画设计有些SCI期刊推荐? - 易智编译EaseEditing
  10. 用二叉树表示家谱关系并实现各种查找功能
  11. SAP FICO 创建利润中心 BAPI_COSTCENTER_CHANGEMULTIPLE
  12. 风口上的“低代码”:是技术变革?还是另一个风险敞口?
  13. 第二节 opencv图片加水印
  14. 剑指Offer对答如流系列 - 构建乘积数组
  15. 南宁计算机专业学校排名,学校排名
  16. C++ Primer 第六章—— 函数 思维导图
  17. WinForm(C#)应用程序之(破)脱壳和修改
  18. 回顾丨李开复哥大毕业演讲:工程师的AI银河系漫游指南
  19. 如何选择及管理腾讯云 MySQL 数据库
  20. 论文阅读(一) 注意力机制

热门文章

  1. pycharm设置显示返回工具箭头菜单和显示哪个文件左侧目录树显示到哪个文件
  2. element框架el-aside高度100%显示
  3. 魏文王问扁鹊的注释_魏文王问扁鹊 魏文王问扁鹊:“子昆弟三人其孰最善为医?” 扁...
  4. Android USB开发小结:host模式与accessory模式
  5. 河南科技大学计算机专业就业情况,河南科技大学好就业吗?附河南科技大学就业率最高的专业名单...
  6. 物联卡要求上传身份证实名认证安全吗,不认证无法使用
  7. 打破构图的平衡!增强设计感染力
  8. navicat设计表怎么给列加注释(简洁版)
  9. 常见的端口号以及协议
  10. 0805,0603,1206这些封装名字的由来