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