comm === 两个æä»¶ä¹é´çæ¯è¾ ## è¡¥å 说æ **commå½ä»¤** å¯ä»¥ç¨äºä¸¤ä¸ªæä»¶ä¹é´çæ¯è¾ï¼å®æä¸äºé项å¯ä»¥ç¨æ¥è°æ´è¾åºï¼ä»¥ä¾¿æ§è¡äº¤éãæ±å·®ã以åå·®éæä½ã * 交éï¼æå°åºä¸¤ä¸ªæä»¶æå ±æçè¡ã * æ±å·®ï¼æå°åºæå®æä»¶æå å«çä¸ä¸ç¸åçè¡ã * å·®éï¼æå°åºå å«å¨ä¸ä¸ªæä»¶ä¸ï¼ä½ä¸å å«å¨å ¶ä»æå®æä»¶ä¸çè¡ã ### è¯æ³ ```shell comm [é项]... æä»¶1 æä»¶2 ``` ### é项 ```shell 妿ä¸é带é项ï¼ç¨åºä¼çæä¸åè¾åºã 第ä¸åå 嫿件1 ç¹æçè¡ï¼ 第äºåå 嫿件2 ç¹æçè¡ï¼ è第ä¸åå å«ä¸¤ä¸ªæä»¶å ±æçè¡ã -1 ä¸è¾åºæä»¶1 ç¹æçè¡ -2 ä¸è¾åºæä»¶2 ç¹æçè¡ -3 ä¸è¾åºä¸¤ä¸ªæä»¶å ±æçè¡ --check-order æ£æ¥è¾å ¥æ¯å¦è¢«æ£ç¡®æåºï¼å³ä½¿ææè¾å ¥è¡åæå¯¹ --nocheck-order 䏿£æ¥è¾å ¥æ¯å¦è¢«æ£ç¡®æåº --output-delimiter=STR ä¾ç §STR åå ``` ### åæ° * æä»¶1ï¼æå®è¦æ¯è¾ç第ä¸ä¸ª**æåº**æä»¶ï¼ * æä»¶2ï¼æå®è¦æ¯è¾ç第äºä¸ª**æåº**æä»¶ã ### å®ä¾ ææ¬ `aaa.txt` å 容 ```shell [root@localhost text]# cat aaa.txt aaa bbb ccc ddd eee 111 222 ``` ææ¬ `bbb.txt` å 容 ```shell [root@localhost text]# cat bbb.txt bbb ccc aaa hhh ttt jjj ``` 两个æä»¶ä¹é´çæ¯è¾ï¼å¦ææ²¡ææåºéè¦å¸¦ä¸`--nocheck-order`åæ°ï¼ æ²¡æå¸¦ä¸åæ°å°ä¼æ¶å°æç¤ºï¼æ¤å½ä»¤éè¦ä¹åè½å¨äºæ¯è¾ã ```shell comm: æä»¶2 没æè¢«æ£ç¡®æåº comm: æä»¶1 没æè¢«æ£ç¡®æåº ``` æ¯è¾ç»æ ```shell [root@localhost text]# comm --nocheck-order aaa.txt bbb.txt aaa bbb ccc aaa ddd eee 111 222 hhh ttt jjj 第ä¸å 第äºå 第ä¸å ``` è¾åºç第ä¸ååªå å«å¨aaa.txtä¸åºç°çè¡ï¼ç¬¬äºåå å«å¨bbb.txtä¸åºç°çè¡ï¼ç¬¬ä¸åå å«å¨aaa.txtåbbb.txtä¸ç¸åçè¡ãå忝以å¶è¡¨ç¬¦ï¼\tï¼ä½ä¸ºå®ç符ã ### æåºæ¯è¾ æåºæ¯è¾ï¼å éè¿ sort å°æä»¶å 容æåº ```shell [root@localhost ~]# sort aaa.txt > aaa1.txt [root@localhost ~]# sort bbb.txt > bbb1.txt ``` æåºæ¯è¾ç»æï¼ ```shell [root@localhost ~]# comm aaa1.txt bbb1.txt 111 222 aaa bbb ccc ddd eee hhh jjj ttt ``` ### äº¤é æå°ä¸¤ä¸ªæä»¶ç交éï¼éè¦å é¤ç¬¬ä¸åå第äºåï¼ ```shell [root@localhost text]# comm aaa.txt bbb.txt -1 -2 bbb ccc ``` **æ±å·®** æå°åºä¸¤ä¸ªæä»¶ä¸ä¸ç¸åçè¡ï¼éè¦å é¤ç¬¬ä¸åï¼ ```shell [root@localhost text]# comm aaa.txt bbb.txt -3 | sed 's/^\t//' aaa aaa ddd eee 111 222 hhh ttt jjj ``` `sed 's/^\t//'` æ¯å°å¶è¡¨ç¬¦`\t`å é¤ï¼ä»¥ä¾¿æä¸¤ååå¹¶æä¸åã ### å·®é éè¿å é¤ä¸éè¦çåï¼å¯ä»¥å¾å°aaa.txtåbbb.txtçå·®éï¼ aaa.txtçå·®é ```shell [root@localhost text]# comm aaa.txt bbb.txt -2 -3 aaa ddd eee 111 222 ``` bbb.txtçå·®é ```shell [root@localhost text]# comm aaa.txt bbb.txt -1 -3 aaa hhh ttt jjj ```