2015-01-14 34 views
1
variable1="ABC 
XYZ 
DEF" 

變量都值分隔「\ n」如何找到在2個變量共同價值觀在shell腳本

variable2="MNO 
ABC 
PQR" 

如何從雙方找到共同的價值「ABC」並將其存儲在一個新變量?

+0

迭代這兩個變量並比較這些值,直到找到兩個相同的值(假設這些值由'\ n'分隔爲空白,它將與通常的'for x in ...'一起使用) – Fernando

回答

1

如果您可以將這些變量輸出到文件中,則可以使用comm。

echo "ABC\nXYZ\nDEF" | sort > va1 
echo "MNO\nABC\nPQR" | sort > va2 
comm -12 va1 va2 

編輯:

@ZoltánNagy提供了一個行版本:

comm -12 <(echo -e "b\na\nc"|sort) <(echo -e "a\nb"|sort) 
+1

cool ;我不知道comm;)另外你可以使用內聯輸入創建'comm -12 <(echo -e「b \ na \ nc」| sort)<(echo -e「a \ nb」| sort)' –

+0

perfect ,作品:) –

+0

@ZoltánNagy是的!謝謝你的建議!我將編輯答案。 – qqibrow

0

你可以簡單地

echo "$variable1" | grep -Fx "$variable2" 

這是移植到POSIX外殼。在一般情況下,假設你不關心POSIX兼容性(在這種情況下,我會推薦使用Bash數組來保存一個變量中的離散值列表,而不是把它們放在換行符分隔的字符串中這個問題不應該被標記爲)。