Como extrair o ano da data (dd/mm/aaaa)

Como extrair o ano da data (dd/mm/aaaa)

Como posso extrair o ano de uma data no formato dd/mm/aaaa?

Eu tenho um arquivo de texto que contém as seguintes datas:

01/01/2001
05/16/1970
06/08/2010

Como posso usar o sed para extrair apenas o ano de cada uma dessas datas?

Responder1

Tente sed, assim:

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' > newfile

que leria o arquivo chamado filee gravaria os resultados no novo arquivo newfile(substitua conforme necessário).

Se você deseja coletar os anos, você pode fazer algo como

cat file | sed 's/[0-1][0-9]\/[0-3][0-9]\/\([12][0-9][0-9][0-9]\)/\1/g' | tr ' ' \\n | grep . | sort -nu

Responder2

echo "01/01/2001 05/16/1970 06/08/2010" > datefile
sed 's:[0-1][0-9]/[0-3][0-9]/::g' datefile

Resultado:2001 1970 2010

Isso funcionará tanto quando todas as datas estiverem em uma linha quanto quando cada data estiver em sua própria linha. O separador serve :para auxiliar na inteligibilidade. A opção global gfaz todas as substituições válidas.

Responder3

Como as datas estão no formato "MM/DD/AAAA" dos EUA, pode-se usar GNU datediretamente no arquivo datesque contém as datas:

$ date -f dates "+%Y"
2001
1970
2010

Você pode fazer uma formatação mais sofisticada para, como

$ date -f dates "+%F is in %Y and is a %A"
2001-01-01 is in 2001 and is a Monday
1970-05-16 is in 1970 and is a Saturday
2010-06-08 is in 2010 and is a Tuesday

As sequências de formatação ( %Ye similares) são descritas no datemanual GNU.

Os formatos de entrada manipulados pelo GNU datesão descritos emo manual GNU coreutils.

Responder4

Com awk:

awk -F'/' '{print $3}' textfile

informação relacionada