2019年3月8日 星期五

使用comm找到兩份文字檔相同與相異的行

指令comm用來比較兩份文件裡面相同與相異的行。以下的範例是比較2與3的倍數:
  1. seq 2 2 30 > 2.txt
  2. seq 3 3 30 > 3.txt
  3. sort 2.txt > two.sort
  4. sort 3.txt > three.sort
  5. comm two.sort three.sort
  6. comm two.sort three.sort | sort -n
  7. comm -23 two.sort three.sort | sort -n
  8. comm -13 two.sort three.sort | sort -n
  9. comm -12 two.sort three.sort | sort -n
要特別注意到是comm這個指令只能夠處理已經過文字排序(lexically sorted)的檔案。上面指令的意思是:
  1. 輸出從2到30中所有2的倍數,存到2.txt
  2. 輸出從3到30中所有3的倍數,存到3.txt
  3. 將2.txt的內容存成文字方式排序的檔案,叫two.sort
  4. 將3.txt的內容存成文字方式排序的檔案,叫three.sort
  5. 比較two.sortthree.sort裡面的差異
    • 第一欄顯示第一個參數也就是two.sort裡面出現的行
    • 第二欄顯示第二個參數也就是three.sort裡面出現的行
    • 第三欄顯示two.sort與three.sort裡面共同出現的行
  6. 將指令5的內容依照數字大小排序
  7. 去除2,3欄,也就是只顯示第1欄的結果,顯示是2的倍數卻不是3的倍數
  8. 去除1,3欄,也就是只顯示第2欄的結果,顯示是3的倍數卻不是2的倍數
  9. 去除1,2欄,也就是只顯示第3欄的結果,顯示同時是2與3的倍數

參考資料

_EOF_

沒有留言:

張貼留言