亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用bash合并兩個文件并刪除重復項?

如何使用bash合并兩個文件并刪除重復項?

交互式愛情 2021-04-06 21:18:06
我想知道如何在一個列上加入兩個文件并刪除重復項。首先舉一些例子。文件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)


查看完整回答
反對 回復 2021-04-16
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

以下內容awk可能對您有所幫助。

awk 'FNR==NR{a[$0];next} !($1 in a)' File2  File1


查看完整回答
反對 回復 2021-04-16
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

您可以使用grep文件(-f)和(-v)反轉匹配選項:


grep -vf File2 File1

輸出:


SERVER3; Deployed; Infrastructure

SERVER4; Deployed; Infrastructure


查看完整回答
反對 回復 2021-04-16
  • 3 回答
  • 0 關注
  • 304 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號