linux - 如何过滤 "diff"命令以排除某些条目?

标签 linux shell diff

我必须将教授给我的一些文本放入两个文件中,并且我必须使用“diff”函数来比较这两个文件。但是,这些文件中的某些行缺少第六(最后)列中的条目。我需要过滤 diff 命令以排除这些行。

我尝试将 diff 命令与正则表达式一起使用,但我无法创建能够仅过滤最后一列的正则表达式。

我试图过滤的文件看起来像:

b72cc000-b72ce000 rw-p 00147000 fc:00 3671434    /usr/lib/i386-linux-gnu/libX11.so.6.3.0
b72ce000-b72d0000 rw-p 00000000 00:00 0 
b72d0000-b72d7000 r-xp 00000000 fc:00 7606808    /lib/i386-linux-gnu/librt-2.23.so
b72d7000-b72d8000 r--p 00006000 fc:00 7606808    /lib/i386-linux-gnu/librt-2.23.so
b72d8000-b72d9000 rw-p 00007000 fc:00 7606808    /lib/i386-linux-gnu/librt-2.23.so
b72d9000-b72f2000 r-xp 00000000 fc:00 7602217    /lib/i386-linux-gnu/libpthread-2.23.so
b72f2000-b72f3000 r--p 00018000 fc:00 7602217    /lib/i386-linux-gnu/libpthread-2.23.so
b72f3000-b72f4000 rw-p 00019000 fc:00 7602217    /lib/i386-linux-gnu/libpthread-2.23.so
b72f4000-b72f6000 rw-p 00000000 00:00 0 
b72f6000-b72f9000 r-xp 00000000 fc:00 7602261    /lib/i386-linux-gnu/libdl-2.23.so
b72f9000-b72fa000 r--p 00002000 fc:00 7602261    /lib/i386-linux-gnu/libdl-2.23.so

我需要在 Linux 虚拟机中对两个类似的文件运行 diff 命令。 diff 应过滤掉第二行和第九行,因为最后一列中没有任何内容。我没有计算机上的安装权限,因此无法安装任何新内容。预装了vim编辑器和C编译器;不过,所以我可以使用它们。

最佳答案

使用 awk 并按字段数进行过滤。

awk 'NF > 5' filename

只会打印至少有 6 个字段的行。

您可以将其与 diff 一起使用并进行进程替换:

diff <(awk 'NF > 5' file1.txt) <(awk 'NF > 5' file2.txt)

关于linux - 如何过滤 "diff"命令以排除某些条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998080/

相关文章:

linux - 通过 soname 插入共享对象的一部分

复制文件的 Git diff

shell - 为什么执行 SparkR 作业会拒绝使用 Oozie 的权限?

shell - 将变量发送到Docker容器中以在脚本中使用

linux - Shell 文件解析以自动上传 youtube

user-interface - 比较可以掩盖差异的工具?

html - diff 到 html (diff2html) 程序

python - 我在哪里可以找到并安装 pygame 的依赖项?

代码在 macOS 上逻辑上有效,但在 Ubuntu 16.04.5 上无效

python - apt-get 在 bash 脚本中没有按预期工作