.png)
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 file
e 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 g
faz todas as substituições válidas.
Responder3
Como as datas estão no formato "MM/DD/AAAA" dos EUA, pode-se usar GNU date
diretamente no arquivo dates
que 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 ( %Y
e similares) são descritas no date
manual GNU.
Os formatos de entrada manipulados pelo GNU date
são descritos emo manual GNU coreutils.
Responder4
Com awk
:
awk -F'/' '{print $3}' textfile