Tengo algunos archivos de texto que contienen algunas columnas separadas por varios espacios, pero en cambio necesito una sola pestaña como separador. ¿Es posible hacer en Bash?
linux
bash
text-manipulation
usuario desconocido
fuente
fuente

Respuestas:
Para convertir secuencias de más de un espacio en una pestaña, pero deje solo espacios individuales :
Para hacer esto para varios archivos:
o
o
fuente
sed: -e expression #1, char 1: unknown command: `.'findde abajo.sedno le gusta tener un espacio antes de la extensión de la copia de seguridad. He editado mi respuesta. Gracias por el informeSi tu personaje tiene varias pestañas, también puedes usar
tr -s:Por ejemplo:
Todos los espacios en blanco se convertirán en uno.
fuente
Puede usar
sedpara reemplazar varios espacios con una pestaña .:Ejemplo para reemplazar uno o más espacios con una pestaña:
fuente
La respuesta más fácil usando solo
bashes:Si hay un número variable de columnas, puede hacerlo, pero solo funcionará
bash, nosh:p.ej
produce:
(hay una pestaña entre cada una, pero es difícil de ver cuando la pego aquí)
También puede hacerlo usando
sedotr, pero observe que el manejo de espacios en blanco al inicio produce resultados diferentes.sed:
tr:
fuente
perl -p -i -e 's/\s+/\t/g' *.txtfuente
Pruebe el siguiente script de SED:
Donde <TAB> está presionando la tecla TAB.
fuente
Esta es una solución muy simple:
Básicamente, sed funciona de esta manera (sed 's / old_pattern / new_pattern / g'). En este caso, el patrón anterior es "\ s +", que significa encontrar el espacio "s" una o más veces "+" y la barra diagonal inversa "\" para interpretar eso como una expresión regular.
El nuevo patrón es la pestaña "\ t", que está escrita en formato de expresión regular y la "g" aplica el reemplazo a todas las líneas "globalmente".
fuente