shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Ordenar linhas com campos do tipo data


From: Luiz Roberto
Subject: Re: [shell-script] Ordenar linhas com campos do tipo data
Date: Fri, 04 Jul 2014 10:51:16 -0300

Mestre, entendi o problema. Só realcei aqui na lista que para o ; significa que podemos dar vários comandos em uma única linha. Ex:
date;pwd;cal
E para manipular um arq. Que contenha separador ; (que é este o caso), temos que incluir o "\" para que o SO entenda que é um caracter normal. O resto vc explicou, como sempre, "nos miiiinimos detalhes"... RS. Abs

Em 04/07/2014 10:18, "'Julio C. Neves' address@hidden [shell-script]" <address@hidden> escreveu:
 

Luiz Roberto Ferreira falou e disse:
Não atentei no ";" e no "-k2,3"

Luiz, se vc reparar, verá que temos um campo texto, um ponto e vírgula (;), um campo data, outro ponto e vírgula (;) e um campo hora. Assim sendo, o -t\; diz que o separador de campos é o ponto e vírgula (;) e o -k2,3 diz para ele classificar pelo campo 2 (data) e depois pelo campo 3 (hora).

Pensei que as dúvidas surgiriam acerca do sed, que é meio doidão...

Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 4 de julho de 2014 09:54, Luiz Roberto Ferreira address@hidden [shell-script] <address@hidden> escreveu:
 

Você é o cara! Não atentei no ";" e no "-k2,3". Só reafirmando aqui no grupo (novatos) de que o ";" é um comando do Linux/Unix e o "-k" subtende-se chave.

Em 04/07/2014 09:09, "'Julio C. Neves' address@hidden [shell-script]" <address@hidden> escreveu:
 

Estavas sumido, heiiim!

Acho mais fácil entender e fazer invertendo a data com um sed, classificando e "desinvertendo". Veja:

$ echo "Carregador ligado;25/06/14;09:08:21
Auto teste bateria;02/07/14;10:00:04
Carregador deslig;02/07/14;10:01:01
arregador ligado;25/06/14;09:08:21
Carregador ligado;25/06/14;09:08:21" | sed -r 's|^([[:alpha:] ]+);([0-9]{2})/([0-9]{2})/([0-9]{2});(.*)$|\1;\4/\3/\2;\5|' |  sort -t\; -k2,3 | sed -r 's|^([[:alpha:] ]+);([0-9]{2})/([0-9]{2})/([0-9]{2});(.*)$|\1;\4/\3/\2;\5|'
arregador ligado;25/06/14;09:08:21
Carregador ligado;25/06/14;09:08:21
Carregador ligado;25/06/14;09:08:21
Auto teste bateria;02/07/14;10:00:04
Carregador deslig;02/07/14;10:01:01




Abcs,
Julio
@juliobash
Próximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 02 a 06/06
São Paulo 4Linux 21 a 25/07
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.



Em 4 de julho de 2014 07:11, address@hidden [shell-script] <address@hidden> escreveu:
 

Mestres,

Já tentei de tudo mas não consegui chegar a uma solução perfeita (awk, sort e afins).

Tenho o seguinte arquivo:


Carregador ligado;25/06/14;09:08:21

Auto teste bateria;02/07/14;10:00:04
Carregador deslig;02/07/14;10:01:01
arregador ligado;25/06/14;09:08:21
Carregador ligado;25/06/14;09:08:21


Preciso ordenar (crescente) , de forma que fique assim:


arregador ligado;25/06/14;09:08:21

Carregador ligado;25/06/14;09:08:21

Carregador ligado;25/06/14;09:08:21

Auto teste bateria;02/07/14;10:00:04
Carregador deslig;02/07/14;10:01:01


O arquivo tem mais de 500 linhas


Podem dar uma força?


Grato desde já.


PS: Vai Brasil!!!!!!!

Diramos











reply via email to

[Prev in Thread] Current Thread [Next in Thread]