如何过滤 "diff" 命令以排除某些条目?
How to filter a "diff" command to exclude certain entries?
我必须将教授给我的一些文本放入两个文件中,然后我必须使用 "diff" 函数来比较这两个文件。但是,这些文件中的某些行在第 6(最后)列中缺少条目。我需要过滤 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 应该过滤掉第 2 行和第 9 行,因为最后一列中没有任何内容。我在机器上没有安装权限,所以我无法安装任何新东西。预装了 vim 编辑器和 C 编译器;但是,所以我可以使用它们。
使用 awk
并按字段数过滤。
awk 'NF > 5' filename
将只打印至少有 6 个字段的行。
您可以将其与 diff
一起使用并进行进程替换:
diff <(awk 'NF > 5' file1.txt) <(awk 'NF > 5' file2.txt)
我必须将教授给我的一些文本放入两个文件中,然后我必须使用 "diff" 函数来比较这两个文件。但是,这些文件中的某些行在第 6(最后)列中缺少条目。我需要过滤 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 应该过滤掉第 2 行和第 9 行,因为最后一列中没有任何内容。我在机器上没有安装权限,所以我无法安装任何新东西。预装了 vim 编辑器和 C 编译器;但是,所以我可以使用它们。
使用 awk
并按字段数过滤。
awk 'NF > 5' filename
将只打印至少有 6 个字段的行。
您可以将其与 diff
一起使用并进行进程替换:
diff <(awk 'NF > 5' file1.txt) <(awk 'NF > 5' file2.txt)