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 trrequiere dos argumentos: un conjunto de caracteres para ser reemplazados y su reemplazo. En este caso solo tenemos conjuntos de 1 carácter. Redirigimos input.csvde entrada tr's flujo de entrada estándar a través de <operador de concha, y canalizar la salida resultante para tr -d '"'eliminar las comillas dobles.
Pero también awkpuede 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, siendo cada secuencia de comandos en línea /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}. Aquí no tenemos un patrón, por lo que significa ejecutar codeblock para cada línea. gsub()La función se usa para la sustitución global dentro de una línea, por lo tanto, la usamos para reemplazar guiones bajos por comas y comillas dobles con una cadena nula (eliminando efectivamente el carácter). El 1está en lugar de la coincidencia de patrón con el bloque de código que falta, que por defecto simplemente imprime la línea; en otras palabras, el bloque de código gsub()hace el trabajo e 1imprime el resultado.
Use la redirección de shell ( >) para enviar la salida a un nuevo archivo:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv