Isso funcionou para mim:
awk -F, 'FNR==1{++f} \
f==1 && $2==7 {a1[$1]++; a2[$2]=$3; o=$0} \
f==2 && a1[$1] {o=o","$3","$4; a3[$3]=$4} \
f==3 && a3[$1] && $2==a3[$1] && a2[$3] && $4<a2[$3] {print o}' \
file1 file2 file3
Explicação :
- A primeira linha (
FNR==1{++f}
) incrementa o índice do arquivo para determinar posteriormente em qual arquivo somos 1-3. -
file1: se
$2
for igual a7
- preencha uma matriz
a1
com$1
como índice ea2
com$2
como índice e$3
como valor - anote a variável
o
(saída) com os primeiros 3 campos
- preencha uma matriz
-
file2: se
$1
defile2
for igual a$1
defile1
(anteriormente gravado ema1
)- acrescente
$3
e$4
à variável de saídao
. - preencha uma matriz
a3
com$3
como índice e$4
como valor.
- acrescente
-
file3: se:
-
$1
é igual a arquivo2s$3
(índice dea3
) -
$2
é igual a arquivo2s$4
(valor dea3
) -
$3
é igual a file1s$2
(índice dea2
) -
$4
é menor que file1s$3
(valor dea2
)
-
-
então:
- imprima o valor de
o
.
- imprima o valor de