shell – Reemplace varios espacios con uno usando solo 'tr'

Pregunta:

Tengo un archivo, f1.txt :

ID     Name
1      a
2         b
3   g
6            f

El número de espacios no es fijo. ¿Cuál es la mejor manera de reemplazar todos los espacios en blanco con un espacio usando solo tr ?

Esto es lo que tengo hasta ahora:

cat f1.txt | tr -d " "

Pero el resultado es:

IDName
1a
2b
3g
6f

Pero quiero que se vea así:

ID Name
1 a
2 b
3 g
6 f

Intente evitar sed .

Respuesta:

Con tr , use la opción de repetición s queeze :

$ tr -s " " < file
ID Name
1 a
2 b
3 g
6 f

O puede usar una solución awk :

$ awk '{$2=$2};1' file
ID Name
1 a
2 b
3 g
6 f

Cuando cambia un campo en el registro, awk reconstruye $0 , toma todos los campos y los concatena juntos, separados por OFS , que es un espacio por defecto.

Eso comprimirá las secuencias de espacios y tabulaciones (y posiblemente otros caracteres en blanco según la configuración regional y la implementación de awk ) en un espacio, pero también eliminará los espacios en blanco iniciales y finales de cada línea.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım