Excluir linhas coincidentes até certo ponto

1. Excluir linhas coincidentes até certo ponto

OffHome
OffHome

(usa Ubuntu)

Enviado em 18/04/2018 - 18:28h

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, duzia, 10/04/2016 05:05
Pera, duzia, 09/05/2016 06:06
Pera, duzia, 11/08/2016 07:07
Pera, duzia, 19/09/2016 10:10
Pera, duzia, 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








  


2. Re: Excluir linhas coincidentes até certo ponto

Marcelo Oliver
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








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts