Extrai linhas com base no intervalo em outro arquivo

2
O arquivo

price.txt tem duas colunas: (nome e valor)

Mary 134
Lucy 56
Jack 88
Marissa 37
Emily 85
Antony 99
O arquivo

range.txt também tem duas colunas: (fruit and value)

apple 57
banana 62
orange 88
blueberry 98

A segunda coluna de range.txt é solicitada (do mínimo ao máximo)

Meu objetivo é extrair linhas de price.txt das quais os valores estão dentro do intervalo de valores (57 - 98) no arquivo range.txt .

O resultado esperado é o seguinte:

Jack 88
Emily 85

Eu tento resolver isso usando o seguinte código, mas não sei como selecionar a primeira linha e a última linha da coluna específica. As partes não claras do código estão entre os asteriscos ( **...** ):

awk 'FNR == NR {value=$2; **low=??; high=??**; next} 
     {if ($2>=**low** && $2<=**high** ) print $0}' range.txt price.txt
    
por lightsnail 14.09.2016 / 23:52

1 resposta

1
awk 'FNR == NR {high=$2; if(NR==1) low=high; next} 
     {if ($2>=low && $2<=high ) print $0}' range.txt price.txt

Quando FNR == NR , ele lerá o arquivo range.txt , aqui designamos a segunda coluna do arquivo range.txt para high e usamos if(NR==1) low=high para atribuir o primeiro valor de high a low , então podemos usar esses valores na próxima sentença if . E o print $0 imprimirá as linhas que atendem à condição.

    
por 15.09.2016 / 02:42