linux - 文件之间的文件比较
问题描述
我计划为我的 JVM 和文件系统的前后健康检查构建一个脚本,我想比较 2 个文件 pre.txt 和 post.txt 并想忽略 file1 和 file2 中的常见行只显示什么这些行存在于 pre.txt 除了 common 作为文件 final.txt 。
使用 comm 命令但不工作 例如:--
pre.txt
Filesystem Size Used Avail Use% Mounted on
udev 966M 0 966M 0% /dev
tmpfs 200M 1.2M 199M 1% /run
/dev/sda2 20G 6.1G 13G 33% /
tmpfs 997M 0 997M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
/dev/loop1 90M 90M 0 100% /snap/core/8268
/dev/loop2 94M 94M 0 100% /snap/core/9066
tmpfs 200M 0 200M 0% /run/user/1000
post.txt
/dev/loop1 90M 90M 0 100% /snap/core/8268
/dev/loop2 94M 94M 0 100% /snap/core/9066
最终的.txt
Filesystem Size Used Avail Use% Mounted on
udev 966M 0 966M 0% /dev
tmpfs 200M 1.2M 199M 1% /run
/dev/sda2 20G 6.1G 13G 33% /
tmpfs 997M 0 997M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
解决方案
您可以使用 grep 排除以下行post.txt
:
$ grep -vxFf post.txt pre.txt
Filesystem Size Used Avail Use% Mounted on
udev 966M 0 966M 0% /dev
tmpfs 200M 1.2M 199M 1% /run
/dev/sda2 20G 6.1G 13G 33% /
tmpfs 997M 0 997M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 997M 0 997M 0% /sys/fs/cgroup
tmpfs 200M 0 200M 0% /run/user/1000
-v
: 反转 grep 的匹配行为以排除匹配行-x
: 只匹配整行-F
: 将模式解释为文字字符串而不是正则表达式-f
: 指定一个文件 (post.txt
) 包含要匹配的模式
推荐阅读
- pandas - 将 csv 文件中的某些列相乘
- docker - 在 travis CI 中连接到 Docker Hub
- json - 在同一命令中从 json 时间读取的 UTC 时间更改为 UTC+1
- ddev - ddev 数据库导入未显示在 phpMyAdmin 中
- python - 抑制可忽略不计的复杂 numpy 特征值?
- python - Tkinter 将选项链接到功能并使用按钮调用它
- tensorflow - 使用带有对象检测的数据增强生成的图像数量
- ios - 使用firebase iOS swift创建具有相同捆绑ID的多个环境?
- r - 从 R 中的 solr 查询中展平 facet.pivot
- mysql - mysql 中缺少 .MYD 和 .MYI 文件