Linux中國

使用 comm 比較兩個排序好的文件

Linux 中的 comm 命令可以讓用戶按行比較兩個已經排序好的文件。在本教程中,我們將使用一些淺顯易懂的例子來討論這個命令行工具。在開始之前,請注意,本教程中提到的所有例子都已經在 Ubuntu 16.04LTS 版本中測試過。

下面的例子將會告訴你 comm 命令是如何工作的。

1、 如何使用 comm 比較兩個排序好的文件

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

comm [name-of-first-file] [name-of-second-file]

比如,假設 file1file2 是這種情況下的兩個文件。前者包含下面幾行內容:

001
056
127
258

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

002
056
167
369

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

comm file1 file2

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

2、 如何不輸出 comm 命令輸出中的某些列

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

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

comm -3 file1 file2

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

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

comm -12 file1 file2

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

3、 如何使用 comm 命令比較兩個未排序好的文件

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

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

comm --nocheck-order file1 file2

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

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

4、 如何用自定義字元串分隔 comm 命令的輸出列

默認情況下,comm 命令的輸出列之間是以空格分隔的。然而,如何你想使用一個自定義字元串作為分隔符,那麼你可以使用 --output-delimiter 選項。使用該選項時需要指定你想用來作為分隔符的字元串。

comm --output-delimiter=+ file1 file2

比如,我們使用加號來作為分隔符:

5、 如何使 comm 的輸出行以 NUL 字元終止

默認情況下,comm 命令的輸出行以新行終止。然而,如果你想,那麼你可以改為以 NUL 字元終止,只需要使用 -z 選項即可:

comm -z file1 file2

結論

comm 命令並沒有特別多的特性性,我們在這兒已經討論了它的絕大多數命令行選項。只需要理解和練習在這篇教程中討論的內容,那麼你便可以在日常工作中知道如何使用這個工具了。如果你有任何問題或者疑問,請前往該命令的 man 手冊,或者在下面評論。

via: https://www.howtoforge.com/linux-comm-command/

作者:Himanshu Arora 譯者:ucasFL 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...