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

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

bash中兩個數組的比較/差異

bash中兩個數組的比較/差異

是否有可能采取bash中兩個數組的差異。如果您可以建議我這樣做的話,那真的很棒。代碼:Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )Array2=( "key1" "key2" "key3" "key4" "key5" "key6" ) Array3 =diff(Array1, Array2)Array3 ideally should be :Array3=( "key7" "key8" "key9" "key10" )感謝您的幫助。
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

echo ${Array1[@]} ${Array2[@]} | tr ' ' '\n' | sort | uniq -u

輸出量


key10

key7

key8

key9

您可以根據需要添加排序


查看完整回答
反對 回復 2019-10-17
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

每當出現一個問題,處理可能無法排序的唯一值時,我的腦子立刻就醒悟。這是我的看法。


#!/bin/bash


diff(){

  awk 'BEGIN{RS=ORS=" "}

       {NR==FNR?a[$0]++:a[$0]--}

       END{for(k in a)if(a[k])print k}' <(echo -n "${!1}") <(echo -n "${!2}")

}


Array1=( "key1" "key2" "key3" "key4" "key5" "key6" "key7" "key8" "key9" "key10" )

Array2=( "key1" "key2" "key3" "key4" "key5" "key6" )

Array3=($(diff Array1[@] Array2[@]))

echo ${Array3[@]}

輸出量

$ ./diffArray.sh

key10 key7 key8 key9

*注意**:像給出的其他答案一樣,如果數組中有重復的鍵,則它們只會被報告一次;這可能是或不是您正在尋找的行為。用于處理該問題的awk代碼更加混亂,而且不夠干凈。


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 1146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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