我想知道如何在一個列上加入兩個文件并刪除重復項。首先舉一些例子。文件1:SERVER1; Deployed; InfrastructureSERVER2; Deployed; InfrastructureSERVER3; Deployed; InfrastructureSERVER4; Deployed; InfrastructureSERVER5; Deployed; Infrastructure文件2:SERVER1;SERVER2;SERVER5;期待:SERVER3; Deployed; InfrastructureSERVER4; Deployed; Infrastructure嘗試過類似的命令:sort File1 File2 | uniq > File3,但是它只返回合并的輸出,因為它確實將每一列視為唯一,輸出類似于: SERVER1; SERVER1; Deployed; Infrastructure SERVER2; SERVER2; Deployed; Infrastructure SERVER3; Deployed; Infrastructure SERVER4; Deployed; Infrastructure SERVER5; SERVER5; Deployed; Infrastructure然后嘗試使用命令從上面獲得的內容中刪除重復項awk -F";" '!_[$1]++' File3,但似乎只刪除了一個重復行,而另一行是:SERVER1;SERVER2;SERVER3; Deployed; InfrastructureSERVER4; Deployed; InfrastructureSERVER5;我想檢查重復項并刪除重復項和服務器本身,您有什么建議嗎?
3 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
該join命令在這里工作:
$ join -t ';' -a 1 -v 2 File1 File2
SERVER3; Deployed; Infrastructure
SERVER4; Deployed; Infrastructure
加入要求對文件進行排序。如果未排序:
$ join -t ';' -a 1 -v 2 <(sort File1) <(sort File2)

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
您可以使用grep文件(-f)和(-v)反轉匹配選項:
grep -vf File2 File1
輸出:
SERVER3; Deployed; Infrastructure
SERVER4; Deployed; Infrastructure
- 3 回答
- 0 關注
- 304 瀏覽
添加回答
舉報
0/150
提交
取消