新聞中心
Linux 中的 comm 命令可以讓用戶按行比較兩個已經(jīng)排序好的文件。在本教程中,我們將使用一些淺顯易懂的例子來討論這個命令行工具使用方法。

目前成都創(chuàng)新互聯(lián)公司已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、上街網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
如何使用 comm比較兩個排序好的文件
要使用comm 命令比較兩個排序好的文件,只需要把它們的名字作為comm 命令的參數(shù)。下面是通常的語法:
comm [name-of-first-file] [name-of-second-file]
比如,假設(shè)file1 和file2 是這種情況下的兩個文件。前者包含下面幾行內(nèi)容:
001
056
127
258
而后者包含下面幾行內(nèi)容:
002
056
167
369
此時,comm命令的輸出如下圖所示:
comm file1 file2
比較兩個排序好的文件的方法—— comm比較兩個排序好的文件的方法—— comm
你可以看到,輸出包含 3 列。第一列是僅包含在file1中的內(nèi)容,第二列是僅包含在 file2 中的內(nèi)容,最后,第三列是兩個文件中均包含的內(nèi)容。
如何不輸出 comm 命令輸出中的某些列
如果你想,你可以不輸出 comm命令輸出中的某些列。對于該特性,你有三個命令行選項可用:-1、-2 和 -3 。正如你所猜想的,這些數(shù)字表示你不想輸出的列。
比如,下面這個命令將會不輸出上面例子中的第三列:
comm -3 file1 file2
比較兩個排序好的文件的方法—— comm比較兩個排序好的文件的方法—— comm
因此,你可以看到,第三列并沒有輸出。
注意,你可以通過一個單一命令同時不輸出多列內(nèi)容。比如:
comm -12 file1 file2
上面這個命令將會不輸出第一、二列。
如何使用 comm 命令比較兩個未排序好的文件
正如我們所知道的,comm 只可用于排序好的文件。如果發(fā)現(xiàn)其中一個文件未排序好,那么便會在輸出中產(chǎn)生一條信息來告訴用戶。比如,我們交換 file1 的第一行和第二行,然后與 file2 進行比較。下面是該命令的輸出:
比較兩個排序好的文件的方法—— comm比較兩個排序好的文件的方法—— comm
你可以看到,這個命令產(chǎn)生一個輸出告訴我們:file1 還沒有排序好。此時,如果你不想讓這個工具檢查輸入是否已經(jīng)排序好,那么你可以使用 –nocheck-order 選項:
comm --nocheck-order file1 file2
比較兩個排序好的文件的方法—— comm比較兩個排序好的文件的方法—— comm
你可以看到,前面出現(xiàn)的提示信息已經(jīng)消失了。
注意,如果你想明確告訴 comm 命令來檢查輸入文件是否排序好,那么你可以使用 –check-order選項。
如何用自定義字符串分隔comm 命令的輸出列
默認(rèn)情況下,comm 命令的輸出列之間是以空格分隔的。然而,如何你想使用一個自定義字符串作為分隔符,那么你可以使用 –output-delimiter選項。使用該選項時需要指定你想用來作為分隔符的字符串。
comm --output-delimiter=+ file1 file2
比如,我們使用加號來作為分隔符:
比較兩個排序好的文件的方法—— comm比較兩個排序好的文件的方法—— comm
如何使 comm 的輸出行以 NUL字符終止
默認(rèn)情況下,comm 命令的輸出行以新行終止。然而,如果你想,那么你可以改為以 NUL 字符終止,只需要使用-z 選項即可:
comm -z file1 file2
結(jié)論
comm 命令并沒有特別多的特性性,我們在這兒已經(jīng)討論了它的絕大多數(shù)命令行選項。只需要理解和練習(xí)在這篇教程中討論的內(nèi)容,那么你便可以在日常工作中知道如何使用這個工具了。如果你有任何問題或者疑問,請前往該命令的 man 手冊,或者在下面評論。
當(dāng)前文章:Linuxcomm命令使用實例
瀏覽地址:http://www.dlmjj.cn/article/cosgogh.html


咨詢
建站咨詢
