Tengo una lista como esta:
Friut;Taste;Color;Other;Apple;Good;Red and Blue;1;Orange;Really Good;Orange;12
Y quiero convertirlo seleccionando cada 4 delimitaciones y convirtiéndolas en filas como esta:
Fruit Taste Color Other
Apple Good Red and G.1
Orange Really Go.Orange 12
¿Cómo es esto posible con Libreoffice (preferido), Openoffice o Excel?
Editar: lo anterior es un ejemplo. Lo estoy usando para seleccionar 4 delimitaciones, pero hay alrededor de 500 filas en las que necesito que funcione.
Edit2: proporcioné mi propia respuesta (correcta)
microsoft-excel
openoffice
libreoffice-calc
Stonewareslord
fuente
fuente
echo "Your string" | perl -pe 's/([^;]*);([^;]*);([^;]*);([^;]*);?/$1,$2,$3,$4\n/g'
e importar el resultado como CSV. ¿Realmente necesita una solución que use LO / OO / Excel y nada más?sed -re 's/([^;]*);([^;]*);([^;]*);([^;]*);?/\1,\2,\3,\4\n/g' file.txt
. Eso-r
es importante, y$1, $2,...
están\1, \2,...
en sintaxis sed.Respuestas:
Macro de VBA para dividir filas enteras en varias filas
Con esta macro, divide filas enteras en varias filas. Puedes elegir cuántas columnas quieres después de dividir. simplemente cambie el valor de
iSplit
en la primera línea. No uso un delimitador específico, solo conteo de columnas.Comenté cada paso. Es fácil ajustar la macro a sus necesidades personales.
fuente
Si la lista es un archivo de texto, puede usar el Asistente de importación de texto en Excel. Supongo que hay una herramienta similar en LibreOffice y Openoffice.org.
Sin embargo, dado que los delimitadores son los
;
signos, cuando importe, será necesario organizar los datos, ya que se importarán como una fila de valores. Puede modificar el archivo de texto original y agregar otro delimitador que signifique la siguiente fila.fuente
Mi respuesta vino del usuario49740:
La primera mitad de la cadena:
Encuentra 4 grupos de
([^;]*)
(todos los caracteres antes del punto y coma) y luego un punto y coma. La segunda mitad:Cambia el texto a formato CSV.
> output.txt
escribirá el archivo convertido en output.txt.fuente