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_dateSaída Exemplo:
01-04-2023Isso 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 conectouVocê 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_dateSaída Exemplo:
Sábado, Abril 01, 2023Este 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_dateSaída Exemplo:
2023-04-01Este 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.