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_file
com o conteúdo para procurar ehuge_file
com muitas linhas como na pergunta. -
-F"[. ]"
definiu o delimitador awks para espaço e ponto. -
FNR==NR
aplica-se apenas aindex_file
-
a[$0]=1
preenche uma matriza
com os padrões de pesquisa como índices e define o valor como1
, apenas que a matriz é criada.
-
-
FNR!=NR
aplica-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 $NF
imprime o último campo do arquivo.
-
A saída:
ValueA
ValueB
ValueC