概述
comm 是 'common' 的縮寫,它是一個專門用於比較兩個已排序檔案之間行的命令。它並行比較檔案內容,並將結果分為三列顯示。第一列表示僅存在於第一個檔案中的行,第二列表示僅存在於第二個檔案中的行,第三列表示兩個檔案共有的行。此命令在比較已排序的文字資料(例如資料庫列表或使用者 ID 列表)時特別強大。
主要特點
comm 命令的主要特點如下:
- 用於比較兩個已排序的檔案。(如果檔案未排序,則必須先使用 `sort` 命令。)
- 將比較結果清晰地分為三列輸出。
- 方便一目了然地掌握文本資料的共同點和差異。
- 具有選擇性隱藏輸出列的功能,可應用於多種用途。
comm 與 diff
comm 和 diff 都是檔案比較工具,但它們的運作方式和目的有所不同。
- comm: 專門用於已排序的檔案,將共同行和獨有行輸出為三列。無法偵測到更改(行內容的修改)。
- diff: 可以比較未排序的檔案,並詳細輸出所有逐行更改(新增、刪除、修改)。
主要選項
comm 命令的選項主要用於隱藏特定的列。
1) 控制輸出列
2) 幫助
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`comm` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
透過 comm 命令的各種使用範例來熟悉其功能。
比較兩個檔案的共同和獨有行
comm file1.txt file2.txt
將兩個已排序檔案的內容分為三列進行比較。
僅輸出兩個檔案共有的行
comm -12 file1.txt file2.txt
使用 `-1` 和 `-2` 選項隱藏僅存在於第一個和第二個檔案中的行,僅輸出共同的行。
僅輸出兩個檔案的獨有行
comm -3 file1.txt file2.txt
使用 `-3` 選項隱藏共同的行,僅輸出每個檔案中獨有的行。
比較未排序的檔案
comm <(sort file1.txt) <(sort file2.txt)
可以透過管道 (`|`) 將 `sort` 命令與 `comm` 一起使用,以比較未排序的檔案。
安裝
comm 作為 `coreutils` 套件的一部分,預設包含在大多數 Linux 發行版中。無需額外安裝。
提示與注意事項
整理了使用 comm 命令時應注意的事項。
提示
- 在使用 comm 之前,**務必對檔案內容進行排序。** 如果檔案未排序,將無法獲得正確的比較結果。
- 要檢查檔案是否已排序,可以執行 `comm file1.txt file2.txt` 並觀察輸出是否符合預期,或者透過 `sort` 命令對檔案進行排序後再重新比較。
- `<(...)` 語法是進程替換 (process substitution),它將 `sort` 命令的結果作為臨時檔案傳遞給 `comm`。這種方法可以方便地比較未排序的檔案。