Como usar o awk para ler uma string de trás para frente

1. Como usar o awk para ler uma string de trás para frente

HTR
HTR

(usa CentOS)

Enviado em 13/01/2011 - 16:24h

Meus amigos, minha dúvida é a seguinte:
dentro de um arquivo txt encontra-se uma única linha com o nome de um arquivo do qual retiro, através do awk, a data e a hora. O nome do arquivo pode ser: fulano_2001_01_13.14_40_45, de onde tiro o ano (2001), o mês (01) e o dia (13), e o mesmo para o horário: hora (14), min (40) e seg (45). Portanto, usando o awk, dentro de um script, eu faço assim (exemplo para pegar o ano):
ANO=`awk '{print substr ($1,8,4)}' ./dado.txt`
E o mesmo faço para o mês, o dia, a hora, etc. No entanto, o nome "fulano" pode variar, pode ser uma string maior ou menor, tipo: eu, beltrano, ou seja, o parâmetro 8 de ($1, 8, 4) teria q ser variável. Minha pergunta é: como faço para pegar esses parâmetros (ano, mês, etc) lendo a linha de trás para frente, já que a data e o horário sempre serão no formato q coloquei acima?

Espero q tenham entendido meu questionamento.

Obrigado,

HTR.


  


2. Re: Como usar o awk para ler uma string de trás para frente

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 13/01/2011 - 17:27h


Amigo, você usa bash? Se sim, que tal ler todas as variáveis de uma vez???
read arquivo ano mes dia hora minuto segundo <<< $( echo "fulano_2001_01_13.14_40_45" | sed -e 's/_/ /g' -e 's/\./ /')

Agora usando o awk ... há várias formas, por exemplo:
ANO=`awk -F_ '{print ($2)}' dado.txt`

Outro
segundo=`awk -F_ '{ print $(NF) }' dado.txt`
minuto=`awk -F_ '{ print $(NF-1) }' dado.txt`
ANO=`awk -F_ '{ print $(NF-4) }' dado.txt`

espero que alguma destas sirva.



3. Re: Como usar o awk para ler uma string de trás para frente

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/01/2011 - 18:55h

Ou grep para pegar a(s) linha(s) e cut para filtrar os campos

# Ano
DATA[0]='2'

# Mês
DATA[1]='3'

# Dia
DATA[2]='4'

# Data completa
DATA[3]='2-4'

ARQ='dado.txt'

case $1 in

'-a' ) FIELD='0';;
'-m' ) FIELD='1';;
'-d' ) FIELD='2';;
'-dt') FIELD='3';;
* ) FIELD='3';;

esac

grep $NOME $ARQ | cut -d '.' -f 1 | cut -d '_' -f $FIELD






4. Re: Como usar o awk para ler uma string de trás para frente

HTR
HTR

(usa CentOS)

Enviado em 14/01/2011 - 10:02h

Pessoal, obrigado. As dicas ajudaram bastante!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts