Bash:
Analisando uma data a partir de uma string
Como fazer:
O próprio Bash é bastante limitado na capacidade direta de análise de datas, muitas vezes dependendo de ferramentas externas como date
e awk
para manipulações mais sofisticadas. Veja como você pode analisar um formato específico e, em seguida, usá-lo com o comando date
para converter ou realizar operações.
Exemplo 1: Extrair uma string de data e convertê-la para outro formato.
Suponha que você tenha uma data no formato aaaa-mm-dd
e deseje convertê-la para dd-mm-aaaa
.
original_date="2023-04-01"
formatted_date=$(date -d $original_date '+%d-%m-%Y')
echo $formatted_date
Saída Exemplo:
01-04-2023
Isso usa o comando date
com a opção -d
para especificar a string de data de entrada, e +%d-%m-%Y
para formatar a saída.
Exemplo 2: Usando awk
para analisar uma data de uma linha de texto estruturado e convertê-la.
Supondo que você tenha uma linha de arquivo de log:
2023-04-01 12:00:00 Usuário conectou
Você pode extrair e converter a parte da data usando awk
e date
.
log_line="2023-04-01 12:00:00 Usuário conectou"
date_part=$(echo $log_line | awk '{print $1}')
formatted_date=$(date -d $date_part "+%A, %B %d, %Y")
echo $formatted_date
Saída Exemplo:
Sábado, Abril 01, 2023
Este exemplo usa awk
para dividir a linha do arquivo de log e extrair a parte da data ($1
representa o primeiro campo delimitado por espaço), e então date
é usado para reformata-la.
Usando ferramentas de terceiros
Para análises mais complexas ou ao lidar com uma ampla variedade de formatos de data, ferramentas de terceiros como dateutils
podem ser muito úteis.
Exemplo com dateutils
:
Supondo que você tenha uma string de data em um formato não padrão, por exemplo, Abril 01, 2023
.
original_date="Abril 01, 2023"
formatted_date=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_date)
echo $formatted_date
Saída Exemplo:
2023-04-01
Este comando usa dateconv
do dateutils
, especificando o formato de entrada com -i
e o formato de saída desejado com -f
. dateutils
suporta uma vasta gama de formatos de data e hora, tornando-o muito versátil para tarefas de análise de data em scripts Bash.