Você pode tentar seguir awk
:
awk 'NR == FNR { x[$1] = $1+0; next; } { for (i in x) { if (x[i] > $1+0 && x[i] < $2+0) { print x[i], $3; } } }' file1 file2
O resultado deve ser:
4 Alpha
2 Alpha
7 Bravo
Eu tenho 2 arquivos,
Arquivo 1:
4
7
2
Arquivo 2:
1 5 Alpha
6 10 Bravo
11 15 Charlie
16 21 Delta
22 30 Echo
Eu quero comparar todas as entradas no arquivo 1 se ele estiver entre col 1 e col 2 do arquivo 2 (deve ser verificado para o arquivo inteiro 2) e se ele corresponder, ele deverá ser impresso respectivo col 1 do arquivo 1 e coluna 3 do arquivo 2.
Eu tentei usar, paste file1 file2 | awk '$1>$2+0 && $1<$3+0 {print $1,$4}'
Mas parece que não está funcionando.
Quando estiver em execução, paste file1 file2 | awk '{print $1}'
Produz como,
4
7
2
16
22
O comando paste
combina o arquivo e não conseguiu diferenciar arquivos.
Apenas por diversão, perl:
perl -MPath::Class -lne '
BEGIN {@codes = map {[split]} file("file2")->slurp; $, = " "}
$val = $_;
($code) = grep {$_->[0] <= $val && $val <= $_->[1]} @codes;
print $val, $code->[2];
' file1
Tags bash text-processing awk sed