Tengo un archivo de texto enorme, demasiado grande para que todo se pueda paginar en la memoria. Todo lo que necesito hacer con este archivo de texto es editar la primera línea (es un archivo CSV y necesito alterar los títulos).
¿Hay alguna manera simple de hacer esto en bash?
edlin
para ms-dos oed
para Unix no parecían tener este problema, pero solo los editores de línea ... RAM en ¡Estos tiempos eran escasos y preciosos y un tamaño de archivo en Gigabytes era algo imposible de creer! ;)ed
! pero sería una buena opción en este caso (no estoy seguro de que pueda manejar un archivo de este tamaño ...)Respuestas:
Puede usar
less
para ver lo que desea editar y usarsed
para hacer los cambios. De esta manera edita sin cargar todo el archivo.Otra forma es dividir el archivo, editar y volver a unir:
fuente
Si su modificación cambia la longitud de la línea, todo el archivo debe reescribirse, consulte, por ejemplo, esta discusión sobre SO. Probablemente debería considerar guardar los datos en una base de datos.
Teniendo esto en cuenta, puedes editar el archivo con sed. Para reemplazar la primera línea, haga algo como esto (GNU sed):
fuente