一天一個shell命令 文本操作系列-comm命令用法_linux shell

來源:互聯網
上載者:User

 comm命令比較兩個已排序檔案每行資料的差異,並將其結果顯示出來,如果沒有指定任何參數,comm命令讀取這兩個檔案,然後產生三列輸出:1>僅在file1中出現的行2>僅在file2中出現的行3>在兩個檔案中都存在的行。
  如果為檔案名稱之一指定 -(減號),則 comm 命令會從標準輸入裝置讀取資料。

題外話:說到比較檔案,過來人都用過Beyond Compare,老版本時候,我們只能右鍵選中用於比較的檔案,再選中被比較檔案,對比。 如今他有了豐富的介面,支援linux上比較檔案。 幹什麼用的?svn管理不善的時候,版本控製做的不好的時候,你就會期望他了。這都是經驗- -!

回到正題:在shell中,也有個這麼個命令---comm。 comm可用於兩個檔案之間的比較。可以用於檔案的比較,交集,求差以及差集操作。

這個定義其實不夠詳細,應該是 comm逐行比較已排序的檔案1和檔案2.

全稱:

(慚愧)沒有找到合適的全稱。 com 很明顯是compare開頭,m為mode。望高手指正。

查看—help

用法:comm [選項]... 檔案1 檔案2
逐行比較已排序的檔案檔案1 和檔案2。

如果不附帶選項,程式會產生三列輸出。第一列包含檔案1 特有的行,第二列包含 檔案2 特有的行,而第三列包含兩個檔案共有的行。

  -1        不輸出檔案1 特有的行
  -2        不輸出檔案2 特有的行
  -3        不輸出兩個檔案共有的行

  --check-order            檢查輸入是否被正確排序,即使所有輸入行均成對
  --nocheck-order        不檢查輸入是否被正確排序
  --output-delimiter=STR    依照STR 分列

 解讀:

1. --check-order

該命令預設情況下  如果希望不檢驗排序,可以--nocheck-order。

 2. --output-delimiter=STR

 STR 就是個運算式。 可以是任何非特殊字元

3. -1,-2

  可以寫成 -12 與普通命令用起來一樣

  執行個體:

1.建立A.txt

加入元素

apple
 orange
 gold
 silver
 steel
 iron

2. 建立B.txt

加入元素

orange
 gold
 cookies
 carrot

可以嘗試直接比較: comm A.txt B.txt

你會發現提示一個錯誤,沒有排序。

3. 排序

複製代碼 代碼如下:

sort A.txt -o A.txt; sort B.txt -o B.txt

4. 比較

複製代碼 代碼如下:

$comm A.txt B.txt

複製代碼 代碼如下:

apple  
      carrot  
      cookies  
                gold  
iron  
                orange  
silver  
steel

結果實際為3列 其中第一列是檔案1特有 -1表示刪除第一列

第二列是檔案2特有的  -2代表刪除第二列
第三列代表共同有的  -3代表刪除共有的列

4.1 列印交集:

$comm –12 A.txt B.txt

4.2 列印兩個檔案中不同的行

$comm –3 A.txt B.txt

補充個小修改,兩列不好看,用sed刪除行首的\t

$comm –3 A.txt B.txt | sed 's/^\t//'

實戰:

  comm在實戰中,只會在一些非常特殊的情境中用到。 比較簡單,就不舉例了。(筆者遇到的情境中,仍然堅持有更好的方案時候,不用這個命令,呵呵)。

本文出自 “書生” 部落格

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.