Aqui está uma abordagem awk
:
$ awk 'FNR==NR{a[$1]=$2; next} {print $0,a[$1]}' bandwidth.txt hits.txt
onlinestudyboard.com received 186 hits from 31/May/2016 at 1201
aaspak.org received 184 hits from 31/May/2016 at 1202 211.57M
khawajarubber.com received 183 hits from 31/May/2016 at 1246
aatonerpk.com received 182 hits from 31/May/2016 at 1231 14.87M
Explicação
awk
lê seu (s) arquivo (s) de entrada linha por linha e divide a linha em campos no espaço em branco (ou o que for dado por -F
). Esses campos são $1
, $ 2 ...
$ N '.
-
NR==FNR
: NR é o número da linha atual, FNR é o número da linha do arquivo atual. Os dois serão idênticos apenas enquanto o primeiro arquivo estiver sendo lido. -
a[$1]=$2; next
: se este for o primeiro arquivo (veja acima), salve o segundo campo em uma matriz cuja chave é o primeiro campo. -
print $0,a[$1]
: imprime a linha atual ($0
) e o valor na matriza
associada ao primeiro campo. Isso imprimirá a linha atual do segundo arquivo junto com qualquer valor do primeiro arquivo associado ao primeiro campo.