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

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

RES: [shell-script] Comparação de datas


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] Comparação de datas
Date: Mon, 14 Nov 2005 17:32:14 -0200

Aê Rodrigo,

sort -n -t';' --key=6 Arquivo -o Arquivo 
NUM=$(grep -n ";$DATA;" Arquivo | head -1 | cut -f1 -d:)
head -$((NUM-1)) Arquivo

explicando:
1a. linha: classifiquei Arquivo pela data dando a saida no próprio Arquivo
(vc pode dar a saída em outro, basta alterar seu nome na 2a. linha).

2a. linha: o grep com a opção -n listou o número das linhas (juntos com as
respectivas linhas separados por dois pontos). O head pegou a primeira linha
e o cut deixou somente o seu numero dentro da variável $NUM.

3a. linha: para pegar as datas anteriores subtrai 1 de NUM e fiz um head
para pegar até a data anterior.

Obs: isso só funciona se: a data correta estiver no arquivo; e existe o
perigo de em algum registro ter um campo que não o 6o. com valor idêntico ao
de $DATA.

Obedecidas estas duas restrições, creio que essa solução seja bem mais
rápida que o while.

[ ]s,
Julio
:wq

| -----Mensagem original-----
| De: Rodrigo Monteiro [mailto:address@hidden]
| Enviada em: segunda-feira, 14 de novembro de 2005 15:38
| Para: Lista Shell-script
| Assunto: [shell-script] Comparação de datas
| 
| 
| Olá pessoal,
| 
| Tenho um arquivo com 6 campos separados por ";" e o último campo é uma
| data no formato "YYYYMMDD" (ano-mes-dia).
| Tenho uma variável contendo uma data no mesmo formato.
| O que eu quero fazer é pegar todas as linhas desse arquivo que a data
| é mais antiga do que a data da variável. Qual a melhor solução? while
| read LINHA ; do ; done < arquivo?
| E como faço a comparação entre as datas nesse formato, para saber se
| uma é mais antiga do que outra?
| 
| []s
| 
| --
| Rodrigo Monteiro
| "Free as in Freedom, not free as in free beer"
| JID: address@hidden
| address@hidden
| 
| 
| ---------------------------------------------------------------------
| Esta lista não admite a abordagem de outras liguagens de 
| programação, como perl, C etc. Quem insistir em não seguir 
| esta regra será moderado sem prévio aviso.
| ---------------------------------------------------------------------
| Sair da lista: address@hidden
| ---------------------------------------------------------------------
| Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
 
Links do Yahoo! Grupos




 



reply via email to

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