Una forma mucho más simple es usar tr
$ tr '_' ',' < input.csv | tr -d '"'
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
La forma en que esto funciona es que tr
toma dos argumentos:el conjunto de caracteres que se reemplazarán y su reemplazo. En este caso solo tenemos conjuntos de 1 carácter. Redireccionamos input.csv
entrada tr
flujo estándar de 's a través de <
operador de shell y canalice la salida resultante a tr -d '"'
para eliminar las comillas dobles.
Pero awk
también puede hacerlo.
$ cat input.csv
"1_1_0_0_76"
"1_1_0_0_77"
"1_1_0_0_78"
$ awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
La forma en que esto funciona es ligeramente diferente:awk lee cada archivo línea por línea, cada script en línea es /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}
. Aquí no tenemos un patrón, por lo que significa ejecutar un bloque de código para cada línea. gsub()
La función se usa para la sustitución global dentro de una línea, por lo que la usamos para reemplazar los guiones bajos con comas y las comillas dobles con una cadena nula (eliminando efectivamente el carácter). El 1
está en lugar de la coincidencia de patrón con el bloque de código faltante, que por defecto simplemente imprime la línea; en otras palabras, el bloque de código con gsub()
hace el trabajo y 1
imprime el resultado.
Use la redirección de shell (>
) para enviar la salida a un nuevo archivo:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv
Como alternativa, también puede usar este sed
comando:
$ sed -e 's/_/,/g' -e 's/"//g' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Perl, la "motosierra del ejército suizo" de procesamiento de texto de línea de comandos, también puede hacer esto. La sintaxis es (no por casualidad) bastante similar a tr
y sed
ejemplos:
perl -pe 'tr/_"/,/d' input.csv > result.csv
o:
perl -pe 's/_/,/g; s/"//g' input.csv > result.csv
Pero honestamente, si no quiere tomarse el tiempo para aprender un nuevo lenguaje de programación (que es realmente lo que son awk, Perl y sed y otras herramientas como ellas) solo para esta tarea básica, también podría hacerlo en cualquier editor de texto que admita buscar y reemplazar:
-
Abra el archivo CSV en su editor de texto favorito (como gedit, kate, mousepad, etc.; incluso el antiguo Bloc de notas o Wordpad en Windows pueden hacer esto).
-
Seleccione "Buscar y reemplazar" en el menú (normalmente se encuentra en "Editar", si no hay un menú "Buscar" separado).
-
Introduce
_
en el cuadro de búsqueda y,
en la caja de reemplazo. -
Haga clic en "Reemplazar todo".
-
Repita con
"
en el cuadro de búsqueda y nada en el cuadro de reemplazo. -
Guarde el archivo.
Ahora, si necesita hacer esto para 100 o 1000 archivos en lugar de solo uno, entonces aprender una nueva herramienta de línea de comandos comienza a tener sentido. Y, por supuesto, una vez que sepa cómo usar Perl o sed o lo que sea, ahorrará mucho tiempo y esfuerzo con tareas similares más adelante. Pero para un trabajo único que no espera tener que volver a hacer, a veces una herramienta interactiva básica como un editor de texto es la solución más sencilla.