您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關comm命令怎么在shell中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
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命令怎么在shell中使用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。