Estoy usando la siguiente línea de comando en Linux para guardar el contenido de mi archivo de entrada (el archivo txt constaba de columnas) como una hoja de cálculo:
less input_file > out_put.csv
mi archivo de salida es
El problema está en la hoja de cálculo de salida; todas las columnas del archivo de entrada se unen en una columna del archivo de salida (hoja de cálculo CSV).
¿Cómo puedo revisar mi código simple para que sea más eficiente guardar mi archivo de texto como texto delimitado por tabulaciones y una hoja de cálculo?
Respuesta1
En primer lugar, less
es sólo un buscapersonas, es una herramienta que te permite leer archivos. Lo que estás haciendo es exactamente lo mismo que copiar input_file a out_put.csv ( cp input_file out_put.csv
). No estás cambiando el contenido de ninguna manera.
Entonces, para leerlo como una hoja de cálculo usando, por ejemplo libreoffice
, necesitaría abrir su aplicación de hoja de cálculo, luego abrir la suya input_file
y usar el espacio como separador de columnas:
Ahora, si realmente quieres convertir tu archivo acomaformato de valores separados ( .csv
), deberá agregar comas. Este comando reemplazará todos los espacios con comas en cada una de sus líneas y guardará el resultado como output.csv
:
sed 's/ */,/g' input_file > output.csv
El comando anterior es sed
y aquí estoy usando suoperador de sustitución. El formato general es s/pattern/replacement/
el que se sustituirá pattern
por replacement
. Al g
final lo reemplazatodoapariciones del patrón en cada línea, sin él, solo reemplazaría la primera. El patrón que le di fue (un espacio) seguido de 0 o más (eso es lo que
*
significa) espacios ( *
) y le dije que lo reemplazara con ,
. Básicamente, esto significa "reemplazar cualquier aparición de uno o más espacios con una coma".