Cómo extraer el año a partir de la fecha (dd/mm/aaaa)

Cómo extraer el año a partir de la fecha (dd/mm/aaaa)

¿Cómo puedo extraer el año de una fecha en el formato mm/dd/aaaa?

Tengo un archivo de texto que tiene las siguientes fechas:

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

¿Cómo puedo usar sed para extraer solo el año de cada una de estas fechas?

Respuesta1

Pruebe sed, así:

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

que leerá su archivo llamado filey escribirá los resultados en el nuevo archivo newfile(reemplácelo según sea necesario).

Si desea recopilar los años, puede hacer 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

Respuesta2

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

Esto funcionará tanto cuando todas las fechas estén en una línea como cuando cada fecha esté en su propia línea. El separador sirve :para ayudar a la inteligibilidad. La opción global grealiza todas las sustituciones válidas.

Respuesta3

Dado que las fechas están en el formato estadounidense "MM/DD/AAAA", se puede usar GNU datedirectamente en el archivo datesque contiene las fechas:

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

Puedes hacer un formato más sofisticado, 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

Las secuencias de formateo ( %Yy similares) se describen en el datemanual de GNU.

Los formatos de entrada manejados por GNU datese describen enel manual de gnu coreutils.

Respuesta4

Con awk:

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

información relacionada