Las tabulaciones almacenan un desplazamiento hasta una posición de tabulación, no una cantidad fija de espacios visibles. Su anchura mostrada depende de la columna actual y de la configuración de las posiciones de tabulación. Las órdenes expand y unexpand convierten entre caracteres de tabulación y espacios teniendo en cuenta esas posiciones.
Text-Fu · Lección 10
expand y unexpand
Aprende cómo las posiciones de tabulación controlan la conversión entre tabulaciones y espacios con expand y unexpand.
Convertir tabulaciones en espacios
expand lee la entrada, sustituye las tabulaciones por los espacios necesarios para llegar a las posiciones de tabulación correspondientes y escribe el resultado en la salida estándar:
$ expand sample.txt
De forma predeterminada, hay una posición de tabulación cada 8 columnas. Por tanto, una tabulación en la columna 1 se expande de forma distinta que una en la columna 6; no siempre se sustituye por ocho espacios.
Con la configuración predeterminada, ¿cómo sustituye expand un carácter de tabulación?
Elegir las posiciones de tabulación
Usa -t NUMBER para colocar posiciones de tabulación cada cantidad especificada de columnas. Para posiciones cada cuatro columnas:
$ expand -t 4 sample.txt
expand de GNU también acepta una lista separada por comas de posiciones de tabulación explícitas. Usa -i cuando solo deban convertirse las tabulaciones anteriores al primer carácter que no sea un espacio en blanco de cada línea.
¿Qué orden convierte tabulaciones usando posiciones cada cuatro columnas?
Guardar la salida convertida de forma segura
expand no edita su archivo de entrada. Redirige la salida estándar a una ruta distinta cuando quieras guardar el texto convertido:
$ expand sample.txt > result.txt
No uses expand sample.txt > sample.txt. El shell trunca el destino antes de que expand pueda leerlo, por lo que los datos de origen pueden perderse. Después de comprobar un resultado escrito por separado, puedes sustituir deliberadamente el original mediante una operación apropiada de gestión de archivos.
¿Qué orden guarda el texto expandido sin truncar sample.txt antes de leerlo?
Convertir espacios en tabulaciones
unexpand sustituye los espacios que cumplen los requisitos por tabulaciones y conserva la alineación en las posiciones seleccionadas. De forma predeterminada, unexpand de GNU solo convierte los espacios en blanco iniciales anteriores al primer carácter que no sea un espacio en blanco de una línea:
$ unexpand result.txt
Usa -a para tener en cuenta los espacios apropiados de toda la línea:
$ unexpand -a result.txt
Esto no se limita a sustituir cada grupo de ocho espacios. La conversión depende de las posiciones de las columnas y de las posiciones de tabulación, igual que con expand. Usa -t 4 u otra especificación de posiciones cuando el archivo siga una convención diferente.
Sin -a, ¿qué espacios suele tener en cuenta unexpand de GNU para la conversión?
¿Qué opción indica a unexpand de GNU que también tenga en cuenta los espacios posteriores al primer carácter que no sea un espacio en blanco?
Ambas órdenes leen de la entrada estándar cuando no se indica ningún archivo, por lo que pueden usarse en tuberías. Recuerda que convertir a espacios y volver a convertir puede no reconstruir la elección original de tabulaciones y espacios, aunque la alineación mostrada no cambie.
Lección completada
Has completado expand y unexpand
Ahora puedes convertir tabulaciones y espacios mientras conservas la alineación de las posiciones de tabulación.
Expande las tabulaciones hasta la siguiente posición configurada.
Establece posiciones de tabulación personalizadas con
-t.Guarda la salida en otro archivo antes de sustituir una entrada.
Convierte de forma predeterminada los espacios iniciales con
unexpand.Usa
-acuando deban tenerse en cuenta los espacios de toda la línea.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita