El debate sobre el uso de tabulaciones y espacios en la programación es interminable.
Si bien es posible que prefiera usar tabulaciones todo el tiempo, es probable que su pauta de codificación sugiera el uso de espacios.
Pero si ya usó tabulaciones en todas partes de su programa y necesita convertir esas tabulaciones en espacios para que el revisor permita su código, está en el lugar correcto.
En este tutorial, le mostraré cómo convertir las pestañas en espacios en un archivo de texto en la línea de comandos de Linux.
Uso del comando expand para convertir pestañas en espacios en la línea de comandos de Linux
Estoy usando este archivo de texto de muestra, que es un programa simple de C++ para verificar números pares e impares. Este es el contenido del archivo:

Puede descargar este archivo desde aquí si desea practicar el comando mientras sigue este tutorial.
Comprueba si tu archivo de texto tiene pestañas
Hay varias formas de hacerlo. El método más simple que encuentro es usar el comando cat.
Puede usar el comando cat con la opción -T y mostrará todas las pestañas como ^I en la pantalla (stdout).
cat -T tab_file
Puede ver la ubicación de las pestañas en el archivo.
#include
using namespace std;
int main()
{
^Iint n;
^Icout << “Enter a number:^I“;
^Icin >> n;
^I
^Iif (n%2 == 0) {
^I^Icout<<n<< “is an even Number”;
^I}
^Ielse
^I^Icout<<n<< “is an odd Number”;
^Ireturn 0;
}

Convertir pestañas en espacios con el comando expandir
Si usa el comando expandir en un archivo, convertirá todas las pestañas en un bloque de 8 espacios y mostrará el resultado en la pantalla.
expand tab_file
Pero eso no es muy conveniente, ¿verdad? Difícilmente verás los cambios aquí. Una mejor idea sería guardar la salida en otro archivo.
expand tab_file > space_file
Ahora, si ve el archivo usando el comando cat, ya no encontrará ninguna pestaña.

Reduce el número de espacios
Como mencioné en la sección anterior, por defecto, una pestaña equivale a 8 espacios. Eso se vería súper raro si tu código tiene una sangría tan grande.
Lo bueno es que puedes cambiar el tamaño del espacio predeterminado con la opción -t.
expand -t N tab_file
Por ejemplo, si tiene que cambiar cada pestaña en 2 espacios, puede usar el comando expandir como este:
expand -t2 tab_file > space_file

Convertir solo las pestañas iniciales en espacios
A menudo, en los programas, solo querrá convertir las pestañas principales, es decir, las pestañas al principio de la línea. No desea tocar las pestañas entre las líneas que en realidad son parte del código.
Expand también ofrece esta opción. Si desea convertir solo las pestañas iniciales en espacios, use la opción –i .
Si continuamos con el ejemplo anterior, así es como se vería el comando:
expand -t2 -i tab_file > space_file

Convierta tabulaciones en espacios y guárdelo en el archivo original
En todos los ejemplos anteriores, ha guardado el archivo convertido en un nuevo archivo. Pero si su objetivo es limpiar su código convirtiendo las pestañas en espacios de los archivos de programa existentes, querrá que la salida se guarde en el archivo original.
Para hacer eso, puedes usar el comando esponja. Sponge 'absorbe' toda la entrada estándar antes de escribirla en la salida. Esto es extremadamente útil cuando intenta cambiar y guardar el mismo archivo.
Ahora, es posible que el comando de esponja no esté disponible en su sistema. Tendrás que instalar el paquete moreutils. Debería estar disponible
En distribuciones basadas en Ubuntu/Debian, puede usar este comando para instalar moreutils:
sudo apt install moreutils
Una vez instalado, puede usarlo en la siguiente función:
expand -t2 -i tab_file | sponge tab_file
Convertir tabulaciones en espacios en todos los archivos coincidentes en un directorio
Hasta ahora, todo lo que aprendiste era aplicable a un solo archivo. Pero si tienes un proyecto que tiene varios archivos de programa y quieres convertir las pestañas en espacios en todos ellos, tendrás que ser un poco más inteligente aquí.
Lo que hemos aprendido hasta ahora se puede combinar con los magníficos comandos de búsqueda y ejecución.
find . -name '*.cpp' -type f -exec bash -c 'expand -t 4 "$0" | sponge "$0"' {} \;
El comando anterior encuentra todos los archivos que terminan con la extensión cpp, pasa estos archivos al comando expandir y el comando expandir escribe la salida en los archivos originales con la ayuda del comando esponja.
Puede pensar que usar el comando sed habría sido más fácil en este punto, pero esa es su elección.