msoliver
(usa Debian)
Enviado em 23/04/2018 - 13:58h
OffHome escreveu:
Olá, amigos!
Já li os comandos "Só sed" do Thobias.org e também os ensinamentos do Aurelio Jargas, mas não encontrei. A exclusão de linhas é sempre se a linha for toda igual. Neste caso, as linhas não se repetem, apenas parte das linhas. Segue o problema. De cada fruta eu só quero, no máximo, três datas: a mais antiga, a data intermediária e a mais recente. Consigo classificar usando o comando sort, mas não posso usar sort -u porque as linhas já são únicas. Se puderem me ajudar, agradeço.
Entrada.txt
Pera, dúzia, 10/04/2016 05:05
Pera, dúzia, 09/05/2016 06:06
Pera, dúzia, 11/08/2016 07:07
Pera, dúzia, 19/09/2016 10:10
Pera, dúzia, 19/09/2016 10:11
Laranja, caixa, 10/04/2017 10:15
Laranja, caixa, 11/04/2017 10:20
Saída.txt
Pera, duzia, 10/04/2016 05:05
Pera, duzia, 09/05/2016 07:07
Pera, duzia, 19/09/2016 10:11
Laranja, caixa, 10/04/2017 10:15
Laranja, caixa, 11/04/2017 10:20
Boa tarde OffHome.
No momento estou "sem Linux" . . .
Segue uma sugestão:
Crie um arquivo com as frutas "ÚNICAS",
A partir desse, busque em entrada pela fruta e coloque o resultado em um arquivo temporário,
Coloque esse temporário. em ordem crescente por data
Pegue a 1ª e a ultima linha...
Falta definir a lógica para "pegar" a intermediária...
Se o Nº de linhas for maior que 2, some 1, divida por 2 e pegue a linha resultante da divisão:
Ex:
Nº de linhas = 3
3+1=4
4/2=2
Pega a linha 2
Nº de linhas = 4
4/2=2
Pega a linha 2
Simplificando:
awk '{printf "%.f\n" ,$1/2}' <<< "$Nlinhas"
O comando acima divide por 2 e arredonda para cima.
Att.:
Marcelo Oliver