Linux 使用 comm 找出兩個檔案不同的內容

想要比對兩個檔案哪些資料是不同的(非 diff,相同資料就不需要再出現),Linux Bash shell 有方便的工具可以快速達成。

Linux 使用 comm 找出兩個檔案不同的內容

要比對出兩個檔案不同的資料,可以使用 awk 或 comm 來快速達成。

兩個檔案如下:

  • file1
    1
    2
    3
    4
    5
  • file2
    6
    7
    1
    2
    3
    4

使用 awk 撈出第二個檔案有多哪些資料

  • awk 'FNR==NR {a[$0]++; next} !a[$0]' file1 file2
    6
    7

使用 comm 撈出兩個檔案分別多哪些資料

comm 可以撈出 file1、file2 分別多的資料,也可以分別撈出 file1 或 file2 多的資料,範例如下:

註:comm 使用前,需要先將檔案做排序

  1. sort file1 > file1.sort
  2. sort file2 > file2.sort
  3. comm -1 1.sort 2.sort # 相同的是 1,2,3,4,第二個檔案多 6,7
        1
        2
        3
        4
    6
    7
  4. comm -3 1.sort 2.sort # 1.sort 多 5, 2.sort 多 6、7
    5
       6
       7
  5. comm -1 -3 1.sort 2.sort # 只要秀出第二個檔案多的值就好
    6
    7
    

comm 參數說明

  • -1 : suppress column 1 (lines unique to FILE1)
  • -2 : suppress column 2 (lines unique to FILE2)
  • -3 : suppress column 3 (lines that appear in both files)

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料