- Gerar link
- X
- Outros aplicativos
Postagem em destaque
- Gerar link
- X
- Outros aplicativos
O uso do 'sed' em uma única linha de comando e dependendo do tamanho da expressão regular pode parecer estranho e confuso a primeira vista; então resolvi montar um 'script sed' que verifica o horário e imprime uma mensagem correspondente.
Ele não faz nada de outro planeta, apenas demonstra o desvio de fluxo em um script 'sed', imprimindo uma determinada mensagem referente ao horário informado, porém com a utilização do script, foi possível tornar o código mais legível, estruturado e de fácil compreensão, se acha que estou exagerando, dê uma olhada na mesma versão com apenas uma linha de comando:
Fica confuso até mesmo para quem criou. kkkk Vale sempre lembrar que aqui o objetivo não é só mostrar o que faz, mas como se faz.
#!/bin/sed -rf
#-----------------------------------------------------------------------------------------------------------
# Data: 4 de Novembro de 2016
# Criado por: Juliano Santos [SHAMAN]
# Script: horario.sed
# Página: https://www.facebook.com/shellscriptx
# Descrição: Script que demonstra o desvio de fluxo durante aplicação de filtros com expressões regulares.
# Imprime uma mensagem de cumprimento referente ao horário informado pelo usuário.
#-----------------------------------------------------------------------------------------------------------
# 1º Padrão (Parte da manhã)
# Verifico se o padrão das horas está entre o
# intervalo de 0:00 até 11:59 horas.
/^(0[0-9]|1[0-1]):([0-5][0-9])$/{
# Troca o buffer padrão e imprime a mensagem.
x;s/^/Bom dia, hora do café da manhã :)/
# Salta para o branch 'fim'
b fim
}
# 2ª Padrão (Parte da tarde)
# Verifico se o padrão das horas está entre o
# intervalo de 12:00 até as 17:59 horas.
/^(1[2-7]):([0-5][0-9])$/{
# Troca o buffer padrão e imprime a mensagem.
x;s/^/Boa tarde, café de novo. :)/
# Salta para o branch 'fim'
b fim
}
# 3ª Padrão (Parte da noite)
# Verifico se o padrão das horas está entre o
# intervalo de 18:00 até 23:59 horas.
/^(1[89]|2[0-3]):([0-5][0-9])$/{
# Troca o buffer padrão e imprime a menagem.
x;s/^/Boa noite, vamos jantar é nóis. :D/
# Salta para o branch 'fim'
b fim
}
# Se os padrões anteriores não casarem, imprime a mensagem de erro.
x;s/^/Onde tu mora hein ??\nSó preciso só das horas e minutos, assim ó hh:mm/
# Finaliza o script
q
# Label 'fim' que constroi a linha de comando
# a ser executada com a mensagem armazenada em '&'.
:fim
# Na final da string, anexa ao buffer padrão o valor do buffer reserva.
$G
# Anexa o cabeçalho 'Horas' ao delimitador '\n' nova linha.
s/(\n)/\1Horas: /
#FIM
Uso: echo 'HH:MM' | ./horario.sed
Ele não faz nada de outro planeta, apenas demonstra o desvio de fluxo em um script 'sed', imprimindo uma determinada mensagem referente ao horário informado, porém com a utilização do script, foi possível tornar o código mais legível, estruturado e de fácil compreensão, se acha que estou exagerando, dê uma olhada na mesma versão com apenas uma linha de comando:
sed -r '/^(0[0-9]|1[0-1]):([0-5][0-9])$/{ x;s/^/Bom dia, hora do café da manhã :)/;b fim; };/^(1[2-7]):([0-5][0-9])$/{ x;s/^/Boa tarde, café de novo. :)/;b fim; };/^(1[89]|2[0-3]):([0-5][0-9])$/{ x;s/^/Boa noite, vamos jantar é nóis. :D/; b fim; };x;s/^/Onde tu mora hein ??\nSó preciso só das horas e minutos, assim ó hh:mm/;q; :fim $G;s/(\n)/\1Horas: /'
Fica confuso até mesmo para quem criou. kkkk Vale sempre lembrar que aqui o objetivo não é só mostrar o que faz, mas como se faz.
Comentários
Postar um comentário