txt texto tabulaciones separado por pipes para macro exportar delimitado datos cómo convertir como comas barras archivo unix

unix - separado - texto delimitado por tabulaciones excel



Cómo convertir un archivo separado por tabulaciones en un archivo separado por comas (8)

¿Es esto lo habitual de las preguntas fáciles en todos los idiomas? Bueno, aquí está mi solución de haskell:

main = interact (unlines . replTab . lines) where replTab l = l >>= (/line -> "/"" ++ line "/"" >>= /char -> case char of ''/t'' -> "/",/"" ''"'' -> "/"/"" _ -> [char] )

No probado, pero debería funcionar.

PD: Todas las demás soluciones no son conscientes de que se escapan comas.

Quiero convertir un archivo separado por pestañas en un archivo csv

Alguien puede ayudarme


En unix:

sed -i -e ''s//t/,/g'' filename


Esto también se puede lograr con Perl:

Para canalizar los resultados a un nuevo archivo de salida, puede utilizar lo siguiente:
perl -wnlp -e ''s//t/,/g;'' input_file.txt > output_file.csv

Si desea editar el archivo en su lugar, puede invocar la opción -i:
perl -wnlpi -e ''s//t/,/g;'' input_file.txt

Si por casualidad encuentra que lo que está tratando no es en realidad pestañas, sino varios espacios, puede usar lo siguiente para reemplazar cada aparición de dos o más espacios con una coma:
perl -wnlpi -e ''s//s+/,/g;'' input_file

Tenga en cuenta que /s representa cualquier carácter de espacio en blanco, incluidos los espacios, las pestañas o las líneas nuevas y no se puede utilizar en la cadena de reemplazo.


Intenta reemplazar todas las pestañas con comas.

Posiblemente con una expresión regular como s//t/,/g , si no tiene ningún campo entre comillas.

O, ya sabes, Excel podría hacer eso por ti. O R. O cualquier cosa que pueda tomar en un archivo TSV.



Puedes usar sed como:

sed ''s//t/,/g'' input_file > output_file

Esto mantendrá el archivo de entrada sin cambios y creará un nuevo archivo de archivo de output_file con los cambios.

Si desea cambiar el archivo de entrada sin crear un nuevo archivo, puede usar la opción -i para hacer cambios in situ:

sed -i ''s//t/,/g'' input_file


Tenga en cuenta que hay muchos tipos de archivos de valores separados por comas. Como no especificó uno, asumiré el formato RFC-4180 , en codificación UTF-8, y el TSV será el mismo, pero se usarán tabulaciones en lugar de comas.

El enfoque ingenuo sería simplemente reemplazar cada pestaña con una coma:

tr ''/t'' ,

Esto cae si alguno de los valores ya contiene una coma, o si alguno contiene una pestaña entre comillas. Deberá analizar el archivo de manera mínima, para mantener la cotización. En lugar de hacer rodar manualmente un analizador de este tipo, es más sencillo, claro y flexible utilizar uno ya escrito, como Text::CSV para Perl:

#!/usr/bin/perl -w use Text::CSV; my $tsv = Text::CSV->new({ sep_char => "/t", auto_diag => 2 }); my $csv = Text::CSV->new(); while (my $row = $tsv->getline(*ARGV)) { $csv->print(STDOUT, $row) or die $csv->error_diag(); print $/; } $csv->error_diag() unless $tsv->eof;


sed -e ''s / TAB_CHAR /, / g'' data.tsv> data.csv

La parte difícil es cómo ingresar el carácter TAB en la línea de comando, para hacerlo: solo hist "CTRL + V", luego TAB

Con frecuencia uso esto con las consultas de mysql con el parámetro -e como se describe en esta publicación del blog http://blog.modsaid.com/2013/12/exporting-data-from-remote-mysql.html