msoliver
(usa Debian)
Enviado em 29/01/2022 - 14:56h
Brunoro escreveu:
Opa, bom dia
Então a questão do "555" é o que eu preciso buscar, que está entre o 1 e o 0 ou como você pontuou (impar par).
Se impar for menor ou igual a "555" e par for maior retornar a linha as linhas. Como tentei explicar no exemplo.
Boa tarde Bruno.
Segue:
awk 'NR%2==1 {printf "%s;",$0} NR%2==0{print $0}' texto.txt|gawk -F";" '$2<=555 && $7>555{print gensub(/[;]/, "\n", "5", $0)}'
Obs: Como é um arquivo grande, sugiro que faça em duas etapas:
awk 'NR%2==1 {printf "%s;",$0} NR%2==0{print $0}' texto.txt >> arq_temp.txt
wait
gawk -F";" '$2<=555 && $7>555{print gensub(/[;]/, "\n", "5", $0)}' arq_temp.txt
1;554;1683;2031;64
0;559;1684;2031;64
1;549;1689;2031;84
0;556;1690;2031;84
---------------------------------------------
Considerei:
Se campo 2 da linha impar <= "555" e campo 2 da linha par > "555", retorna as duas linhas.
---------------------------------------------
O 1º awk junta as linhas "Impar par"
O 2º awk, valida os campos.
É isso.....
______________________________________________________________________
RECIPROCIDADE:
Se te ajudei, me ajude e ajude o outros usuários.
Marque o tópico como resolvido e ESCOLHA a MELHOR RESPOSTA.
----------------------------------------------------------------------------------------------------------------
lynx --dump
https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando:
ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________