.png)
¿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 file
y 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 g
realiza todas las sustituciones válidas.
Respuesta3
Dado que las fechas están en el formato estadounidense "MM/DD/AAAA", se puede usar GNU date
directamente en el archivo dates
que 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 ( %Y
y similares) se describen en el date
manual de GNU.
Los formatos de entrada manejados por GNU date
se describen enel manual de gnu coreutils.
Respuesta4
Con awk
:
awk -F'/' '{print $3}' textfile