Eu suponho que o arquivo com o índice não é muito grande, que pode ser carregado completamente na memória. Se sim, você pode usar este awk :
awk -F"[. ]" 'FNR==NR{a[$0]=1} FNR!=NR&&a[$2"."$3]{print $NF}' index_file huge_file
-
awké chamado com dois arquivos:index_filecom o conteúdo para procurar ehuge_filecom muitas linhas como na pergunta. -
-F"[. ]"definiu o delimitador awks para espaço e ponto. -
FNR==NRaplica-se apenas aindex_file-
a[$0]=1preenche uma matrizacom os padrões de pesquisa como índices e define o valor como1, apenas que a matriz é criada.
-
-
FNR!=NRaplica-se apenas aohuge_file. -
a[$2"."$3]se o índice da matriz do campo 2 e o campo 3 concatenado por um ponto existir (quando o padrão é encontrado) ...-
print $NFimprime o último campo do arquivo.
-
A saída:
ValueA
ValueB
ValueC