如何在shell脚本中查找2个变量中的公共值

时间:2015-01-14 06:23:06

标签: bash shell

variable1="ABC
XYZ
DEF"

变量的值由" \ n"

分隔
variable2="MNO
ABC
PQR"

如何找到共同的价值" ABC"来自两者并将其存储在一个新变量中?

2 个答案:

答案 0 :(得分: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 :(得分:0)

你可以简单地

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

这可以移植到POSIX shell。

在一般情况下,我建议使用Bash数组来保存变量中的离散值列表,而不是将它们放在换行符分隔的字符串中,假设您不关心POSIX兼容性(在这种情况下,这个问题不应标记为)。