Tengo un archivo csv que contiene un montón de datos y una de las columnas es la fecha. Estoy tratando de extraer todas las líneas que tienen fechas en un año específico y guardarlas en un archivo nuevo.
El formato del archivo es así con la fecha y la hora en la segunda columna:
000000000,04/10/2021 02:10:15,.....
Hasta ahora probé:
grep -E ^2020 data.csv >> temp.csvPero solo produjo una lista temporal vacía. ¿Alguna idea sobre cómo puedo hacer esto?
Una posible solución es con awk :
awk -F"," '$2 ~ /\/2020 /' data.csv > temp.csv Otra opción potencial es con grep :
grep "\/2020 " data.csv > temp.csv Sin embargo, la solución grep puede detectar "/2020" en otra parte del archivo, en lugar de en la columna 2.
Aunque la solución awk es mejor aquí, por ejemplo
awk -F, 'index($2, "/2021 ")' file grep también se puede usar aquí:
grep '^[^,]*,[^,]*/2021 ' fileVer la demostración en línea
Notas:
awk -F, 'index($2, "/2021 ")' divide las líneas (registros) en campos con una coma (ver -F, ), y si hay un /2021 + espacio en el segundo campo ( $2 ) el se imprime la linea^[^,]*,[^,]*/2021 en el comando grep coincide^ - comienzo de la cadena[^,]* - cero o más caracteres sin coma,[^,]* - a , y cero o más caracteres sin coma/2021 : una subcadena literal.