每日Linux学习:超N的文本对比工具comm

boyanx6个月前技术教程22

comm 命令用于逐行比较两个已排序的文件,非常类似sql的join语句。使用前必须提前排序文件(可用 sort 命令),否则结果不可靠。结合3个参数的使用,会有一些非常实用的用法,本文将用大量的实例详细讲解。


一、示例文件准备

先创建两个已排序的文件:

# 文件1: fruits1.txt
apple
banana
grape
orange

# 文件2: fruits2.txt
banana
cherry
grape
kiwi


二、实例讲解

1、基础用法

comm fruits1.txt fruits2.txt

其默认输出三列(以制表符分隔):

第一列:仅 文件1 存在的行

第二列:仅 文件2 存在的行

第三列:两个文件共有的行

输出:

apple
banana
cherry
grape
kiwi
orange

第一列(无缩进):仅 fruits1.txt 有的行。输出:apple, orange

第二列(一个制表符缩进):仅 fruits2.txt 。输出:cherry, kiwi

第三列(两个制表符缩进):共有的行。输出:banana, grape


2、仅显示共有的行(隐藏第1、2列)

comm -12 fruits1.txt fruits2.txt

输出:

banana
grape

-1:隐藏第一列(仅文件1)

-2:隐藏第二列(仅文件2)

comm -12就是保留第三列(共有行),显示fruits1.txt与fruits2.txt的交集。


3、仅显示文件1独有的行

comm -23 fruits1.txt fruits2.txt

输出:

apple
orange

-2:隐藏第二列(仅文件2)

-3:隐藏第三列(共有)

comm -23就是保留第一列(文件1)中不同于第二列的信息。显示fruits1.txt中不同于fruits2.txt的信息。


4、仅显示文件2独有的行

comm -13 fruits1.txt fruits2.txt

输出:

cherry
kiwi

-1:隐藏第一列(仅文件1)

-3:隐藏第三列(共有)

comm -13保留第二列(仅文件2)中不同于第一列的信息。


5、处理未排序文件

先排序再比较(使用进程替换):

comm <(sort unsorted1.txt) <(sort unsorted2.txt)


注意事项

1、文件必须已排序,若未排序,请预先使用 sort file.txt > sorted_file.txt 预处理。

2、强制不检查排序(不推荐):--nocheck-order。

3、重复行的处理:

4、同一文件中的重复行会被视为不同行。例如:

# 文件1: aa.txt
apple
apple

# 文件2: bb.txt
apple

comm aa.txt bb.txt

输出:

apple
apple

第一个 apple 是共有行(第三列)。

第二个 apple 是文件1独有的行(第一列)。

所以推荐sort排序时加上-u参数,去掉重复行


最后给一个实践中的常用的实例:

在系统安全审计中经常会核查/etc/passwd文件,查看账号的异动,我们可以在生产系统上线后,将/etc/passwd文件做个备份,将这个备份文件作为基准文件,后面核查账号时通过comm对比passwd文件与基准文件差异,这样就轻松的完成核查。

假设基准(备份)文件名称:bak_passwd

#先将备份文件、passwd排序:
sort -u bak_passwd > base.txt
sort -u /etc/passwd > check.txt
#comm -23比较:
comm -23 check.txt base.txt

相关文章

Jan AI,一款注重隐私保护非网页版跨平台的AI工具

如果你对AI有隐私保护的需求,又不喜欢网页版的ChatGPT,Jan这款AI应用正适合你。Jan 是一个可在个人的设备上100%离线运行的 ChatGPT 替代品。我其目标是让普通人能够轻松下载和运行...

Windows、Mac、Linux 全局文件搜索工具对比

对 Windows、Mac、Linux 系统上全局文件搜索工具(Everything、mdfind、locate/plocate)的详细对比,从多个维度分析其特点与差异:一、基础信息对比维度Every...

谈谈目前最好用的文件搜索神器

Everything 是由 voidtools 开发的免费、轻量级、超高速的 Windows 本地文件搜索工具。它通过直接读取 NTFS 文件系统的 USN 日志(而非扫描硬盘),实现秒级检索全盘文件...

这五个神仙网站,你可能现在用不到,但是一定要备着

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:海斗星河最近我整理了一下之前推荐的软件,发现已经很久没有推荐过网站了。其实我一直都在收集一些实用的网站,刚好趁着这次不知道推荐什么的时候,给...

在线协作白板是什么,哪个好用?5个主流的白板工具盘点推荐!

相信每个职场人都有这么一种经历,临时想把一个文件分享给同事,费尽千辛万苦,却发现死活找不到,办公俨然成了“不是在找文件,就是在找文件的路上”,这样的办公体验别提有多差了:不止要处理糟心事,还不得不忍受...

AI工具使用效果对比:根据原型图生成前端页面

参赛选手(下划线是要扔垃圾箱的选手)编程工具traeCNtrae国际版CodeBuddyAugmentfittencodecursorCodeGeeX通义灵码大模型/综合工具豆包通义千问夸克APP腾讯...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。