Uma coisa que você pode fazer é verificar as palavras que aparecem nas duas strings:
$ comm -12 <(sed 's/ /\n/g' <<<$str1 | sort) <(sed 's/ /\n/g' <<<$str2 | sort )
30
alanine
Explicação
-
O
comm command
compara arquivos. Com os sinalizadores-1
e-2
, ele imprimirá as linhas encontradas em ambos arquivos. -
sed 's/ /\n/g' <<<$str1 | sort
: Isso simplesmente substitui todos os espaços por novas linhas em$str1
, imprimindo na saída padrão, que é então passada porsort
porquecomm
precisa que seus arquivos de entrada sejam classificados. Para mais informações sobre o formato<<<$var
, consulte Bash: Here Strings . -
O formato
<(command)
é chamado de substituição de processo, mais sobre aqui .
O resultado final do comando acima será uma lista de todas as palavras que aparecem em ambas as strings.