Reemplace todos los espacios en blanco con comas en un archivo de texto

10

Necesito reemplazar todos los espacios en blanco dentro de mi texto con comas. Actualmente estoy usando esta línea pero no funciona: obtengo como salida un archivo de texto que es exactamente el mismo que el original:

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

Gracias

aneuryzm
fuente
sed 's / [[: blank:]] \ + /, / g'
mug896
@ mug896 funcionó para mí en Ubuntu 18.04 Necesitaba los corchetes dobles y el \ antes del +
dmontaner

Respuestas:

15

Con sed:

sed -e 's/\s\+/,/g' orig.txt > modified.txt

O con perl:

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

Editar: para excluir nuevas líneas en perl, puede usar un doble negativo 's/[^\S\n]+/,/g'o una coincidencia solo con los caracteres de espacio en blanco que elija 's/[ \t\r\f]+/,/g'.

Caleb
fuente
Gracias, sin embargo, todavía hay un problema: no quiero reemplazar las "siguientes líneas \ n" con una coma, y ​​el comando con perl lo está haciendo actualmente. Ella ordenó que escribiste, todavía no funciona.
aneuryzm
Lo siento, debes escapar del +operador en sed, acabo de actualizar mi respuesta. Las nuevas líneas son whitepsace en perl, por lo que tendrá que hacer su clase de whitepsace manualmente si no desea incluirla. Agregué dos soluciones para eso también.
Caleb
13

Utilizando tr:

tr -s '[:blank:]' ',' <file

Esto reemplazará cualquier espacio en blanco horizontal con una coma. Cualquier espacio en blanco repetido solo se reemplazará con una coma.

Steven D
fuente
-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

Aquí el nombre del archivo es Servidores. Contiene el siguiente contenido.

Server1
Server2
Server3

Si usamos el comando anterior, podemos obtener la salida a continuación.

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
usuario165585
fuente