Linux comm 命令
簡介
Linux是一個開源作業系統,它提供了廣泛的強大而靈活的工具來管理和操作檔案和資料。“comm”命令是Linux中一個重要的工具,用於逐行比較兩個已排序的檔案。此命令可用於識別檔案的公共行或差異。本文將討論comm命令、其語法和示例。
comm 命令的語法
comm 命令的語法如下:
comm [OPTION]... FILE1 FILE2
其中,FILE1 和 FILE2 是需要比較的兩個檔案。comm 命令使用的選項包括:
-1 − 不列印第 1 列
-2 − 不列印第 2 列
-3 − 不列印公共行
-i − 忽略大小寫差異
-u − 只打印 FILE1 和 FILE2 中獨有的行
-z − 使用零位元組而不是換行符作為行分隔符
--check-order − 檢查輸入是否已正確排序,即使所有輸入行都是可配對的。
使用 comm 命令比較兩個已排序的檔案
comm 命令用於比較兩個已排序的檔案。如果檔案未排序,則輸出可能不正確。該命令逐行比較兩個檔案,並將輸出顯示在三列中。第一列顯示僅在第一個檔案中存在的行,第二列顯示僅在第二個檔案中存在的行,第三列顯示兩個檔案中都存在的行。
示例
讓我們假設我們有兩個已排序的檔案:file1.txt 和 file2.txt。file1.txt 的內容如下:
apple banana grape mango orange
file2.txt 的內容如下:
apple banana cherry mango watermelon
要比較這兩個檔案,可以使用以下命令:
$ comm file1.txt file2.txt
此命令的輸出將是:
apple banana cherry grape mango orange watermelon
在輸出中,僅在 file1.txt 中存在的行顯示在第一列,僅在 file2.txt 中存在的行顯示在第二列,兩個檔案中都存在的行顯示在第三列。
使用 comm 命令比較兩個未排序的檔案
如果檔案未排序,則 comm 命令的輸出可能不正確。在這種情況下,可以在比較之前使用 sort 命令對檔案進行排序。可以使用以下命令對檔案進行排序:
$ sort FILENAME > SORTED_FILENAME
其中,FILENAME 是需要排序的檔名,SORTED_FILENAME 是已排序的檔名。
示例
讓我們假設我們有兩個未排序的檔案:file1.txt 和 file2.txt。file1.txt 的內容如下:
grape apple orange banana mango
file2.txt 的內容如下:
mango watermelon cherry apple banana
要比較這兩個檔案,可以先對檔案進行排序,然後使用 comm 命令進行比較。可以使用以下命令對檔案進行排序:
$ sort file1.txt > sorted_file1.txt $ sort file2.txt > sorted_file2.txt
現在,可以使用 comm 命令比較已排序的檔案:
$ comm sorted_file1.txt sorted_file2.txt
此命令的輸出將是:
apple banana cherry grape mango orange watermelon
正如我們所看到的,輸出與之前的示例相同,其中檔案已經排序。
比較檔案時忽略大小寫差異
comm 命令根據字元的大小寫進行檔案比較。但是,有時我們可能希望在不考慮字元大小寫的情況下比較檔案。在這種情況下,可以在 comm 命令中使用 -i 選項。此選項告訴 comm 命令在比較檔案時忽略大小寫差異。
示例
讓我們假設我們有兩個檔案:file1.txt 和 file2.txt。file1.txt 的內容如下:
Apple banana Grape Mango orange
file2.txt 的內容如下:
apple banana cherry mango watermelon
要比較這兩個檔案而不考慮字元的大小寫,可以使用以下命令:
$ comm -i file1.txt file2.txt
此命令的輸出將是:
cherry grape orange watermelon
正如我們所看到的,輸出只顯示任何檔案中獨有的行,而不考慮字元的大小寫。
只打印來自兩個檔案的唯一行
有時,我們可能只想列印檔案中唯一的行,而不是兩個檔案中都存在的行。在這種情況下,可以在 comm 命令中使用 -u 選項。此選項告訴 comm 命令只打印 FILE1 和 FILE2 中唯一的行。
示例
讓我們假設我們有兩個檔案:file1.txt 和 file2.txt。file1.txt 的內容如下:
apple banana grape mango orange
file2.txt 的內容如下:
apple banana cherry mango watermelon
要只打印這兩個檔案中唯一的行,可以使用以下命令:
$ comm -u file1.txt file2.txt
此命令的輸出將是:
cherry grape orange watermelon
正如我們所看到的,輸出只顯示任何檔案中獨有的行,而不顯示兩個檔案中都存在的行。
使用零位元組作為行分隔符
預設情況下,comm 命令使用換行符作為行分隔符。但是,有時我們可能希望使用零位元組作為行分隔符。在這種情況下,可以在 comm 命令中使用 -z 選項。此選項告訴 comm 命令使用零位元組作為行分隔符。
示例
讓我們假設我們有兩個檔案:file1.txt 和 file2.txt。file1.txt 的內容如下:
apple banana grape mango orange
file2.txt 的內容如下:
apple banana cherry mango watermelon
要使用零位元組作為行分隔符來比較這兩個檔案,可以使用以下命令:
$ comm -z file1.txt file2.txt
此命令的輸出將是:
apple�banana�cherry�grape�mango�orange�watermelon�
正如我們所看到的,輸出使用零位元組作為行分隔符,而不是換行符。
結論
comm 命令是一個強大的工具,允許我們逐行比較兩個檔案。我們可以使用各種選項與 comm 命令結合使用,以根據我們的需求定製輸出。本文中討論的示例演示了我們可以使用 comm 命令的各種方法。通過了解 comm 命令及其選項,我們可以有效地比較檔案並找出它們之間的差異。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP