首頁 > 系統教程 > Linux > 主體

透過使用'comm'指令來比較兩個已排序的文件

WBOY
發布: 2024-01-08 14:50:27
轉載
862 人瀏覽過
導讀 Linux 中的 comm 指令可以讓使用者按行比較兩個已經排序好的檔案。在本教程中,我們將使用一些淺顯易懂的範例來討論這個命令列工具。在開始之前,請注意,本教程中提到的所有範例都已經在 Ubuntu 16.04LTS 版本中測試過。 .

下面的範例將會告訴你 comm 指令是如何運作的。 。

比较两个排序好的文件的方法—— comm

#如何使用 comm比較兩個排序好的檔案

要使用comm 指令比較兩個排序好的文件,只要要把它們的名字當作comm 指令的參數。下面是通常的語法:

comm [name-of-first-file] [name-of-second-file]
登入後複製

例如,假設file1 file2 是這種情況下的兩個檔案。前者包含下面幾行內容:

001
056
127
258
登入後複製

而後者包含下面幾行內容:

002
056
167
369
登入後複製

此時,comm指令的輸出如下圖所示:

comm file1 file2
登入後複製

比较两个排序好的文件的方法—— comm

#你可以看到,輸出包含 3 列。第一列是僅包含在file1中的內容,第二列是僅包含在file2 中的內容,最後,第三列是兩個檔案中都包含的內容。

如何不輸出 comm 指令輸出中的某些欄位

如果你想,你可以不輸出 comm指令輸出中的某些欄位。對於該特性,你有三個命令列選項可用:-1-2-3 。正如你所猜想的,這些數字表示你不想輸出的列。

例如,下面這個指令將會不輸出上面範例中的第三列:

comm -3 file1 file2
登入後複製

比较两个排序好的文件的方法—— comm

#因此,你可以看到,第三列並沒有輸出。

注意,你可以透過一個單一指令同時不輸出多列內容。如:

comm -12 file1 file2
登入後複製

上面這個指令將會不輸出第一、二列。

如何使用 comm 指令比較兩個未排序好的檔案

如我們所知道的,comm 只可用於排序好的檔案。如果發現其中一個檔案未排序好,那麼便會在輸出中產生一條訊息來告訴使用者。例如,我們交換 file1 的第一行和第二行,然後再與 file2 進行比較。下面是該指令的輸出:

比较两个排序好的文件的方法—— comm

#你可以看到,這個指令產生一個輸出告訴我們:file1 還沒排序好。此時,如果你不想讓這個工具檢查輸入是否已經排序好,那麼你可以使用 --nocheck-order 選項:

comm --nocheck-order file1 file2
登入後複製

比较两个排序好的文件的方法—— comm

#你可以看到,前面出現的提示訊息已經消失了。

注意,如果你想明確告訴 comm 指令來檢查輸入檔是否排序好,那麼你可以使用 --check-order選項。

如何用自定义字符串分隔comm 命令的输出列

默认情况下,comm 命令的输出列之间是以空格分隔的。然而,如何你想使用一个自定义字符串作为分隔符,那么你可以使用 --output-delimiter选项。使用该选项时需要指定你想用来作为分隔符的字符串。

comm --output-delimiter=+ file1 file2
登入後複製

比如,我们使用加号来作为分隔符:

比较两个排序好的文件的方法—— comm

如何使 comm 的输出行以 NUL字符终止

默认情况下,comm 命令的输出行以新行终止。然而,如果你想,那么你可以改为以 NUL 字符终止,只需要使用-z 选项即可:

comm -z file1 file2
登入後複製
结论

comm 命令并没有特别多的特性性,我们在这儿已经讨论了它的绝大多数命令行选项。只需要理解和练习在这篇教程中讨论的内容,那么你便可以在日常工作中知道如何使用这个工具了。如果你有任何问题或者疑问,请前往该命令的 man 手册,或者在下面评论。


以上是透過使用'comm'指令來比較兩個已排序的文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:linuxprobe.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板