GNU/Linux >> Tutoriels Linux >  >> Linux

Convertir les onglets en espaces dans le terminal Linux avec la commande Expand

Le débat sur l'utilisation des tabulations et des espaces dans la programmation est sans fin.

Bien que vous préfériez utiliser des tabulations tout le temps, il est probable que votre directive de codage suggère d'utiliser des espaces.

Mais si vous avez déjà utilisé des tabulations partout dans votre programme et que vous devez convertir ces tabulations en espaces pour que le réviseur autorise votre code, vous êtes au bon endroit.

Dans ce tutoriel, je vais vous montrer comment convertir les tabulations en espaces dans un fichier texte en ligne de commande Linux.

Utilisation de la commande expand pour convertir les tabulations en espaces dans la ligne de commande Linux

J'utilise cet exemple de fichier texte qui est un programme C++ simple pour vérifier les nombres pairs et impairs. Voici le contenu du fichier :

Vous pouvez télécharger ce fichier à partir d'ici si vous souhaitez pratiquer la commande tout en suivant ce didacticiel.

Vérifiez si votre fichier texte a des onglets

Il y a plusieurs façons de le faire. La méthode la plus simple que je trouve consiste à utiliser la commande cat.

Vous pouvez utiliser la commande cat avec l'option -T et affichera tous les onglets sous la forme ^I à l'écran (stdout).

cat -T tab_file

Vous pouvez voir l'emplacement des onglets dans le fichier.

#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 les onglets en espaces avec la commande expand

Si vous utilisez la commande expand sur un fichier, elle convertira tous les onglets en un bloc de 8 espaces et affichera la sortie à l'écran.

expand tab_file

Mais ce n'est pas très pratique, n'est-ce pas ? Vous verrez à peine les changements ici. Une meilleure idée serait d'enregistrer la sortie dans un autre fichier.

expand tab_file > space_file

Maintenant, si vous voyez le fichier en utilisant la commande cat, vous ne trouverez plus d'onglets.

Réduire le nombre d'espaces

Comme je l'ai mentionné dans la section précédente, par défaut, une tabulation est égale à 8 espaces. Cela aurait l'air super bizarre si votre code avait une telle indentation.

La bonne chose est que vous pouvez modifier la taille de l'espace par défaut avec l'option -t.

expand -t N tab_file

Par exemple, si vous devez changer chaque onglet en 2 espaces, vous pouvez utiliser la commande expand comme ceci :

expand -t2 tab_file > space_file

Convertir uniquement les tabulations de début en espaces

Souvent, dans les programmes, vous ne voudriez convertir que les tabulations principales, c'est-à-dire les tabulations au début de la ligne. Vous ne voulez pas toucher les onglets entre les lignes qui font réellement partie du code.

Expand propose également cette option. Si vous souhaitez uniquement convertir les tabulations de début en espaces, utilisez l'option –i .

Si nous continuons l'exemple précédent, voici à quoi ressemblerait la commande :

expand -t2 -i tab_file > space_file

Convertir les onglets en espaces et les enregistrer dans le fichier d'origine

Dans tous les exemples ci-dessus, vous avez enregistré le fichier converti dans un nouveau fichier. Mais si votre objectif est de nettoyer votre code en convertissant les onglets en espaces des fichiers de programme existants, vous voudriez que la sortie soit enregistrée dans le fichier d'origine lui-même.

Pour ce faire, vous pouvez utiliser la commande sponge. L'éponge "absorbe" toute l'entrée standard avant de l'écrire sur la sortie. Ceci est extrêmement utile lorsque vous essayez de modifier et d'enregistrer le même fichier.

Maintenant, la commande sponge peut ne pas être disponible sur votre système. Vous devrez installer le package moreutils. Il devrait être disponible

Sur les distributions basées sur Ubuntu/Debian, vous pouvez utiliser cette commande pour installer moreutils :

sudo apt install moreutils

Une fois installé, vous pouvez l'utiliser dans la fonction suivante :

expand -t2 -i tab_file | sponge tab_file

Convertir les tabulations en espaces dans tous les fichiers correspondants d'un répertoire

Jusqu'à présent, tout ce que vous avez appris était applicable à un seul fichier. Mais si vous avez un projet qui a plusieurs fichiers de programme et que vous voulez convertir les onglets en espaces dans chacun d'eux, vous devrez être un peu plus intelligent ici.

Ce que nous avons appris jusqu'à présent peut être combiné avec les magnifiques commandes find et exec.

find . -name '*.cpp' -type f -exec bash -c 'expand -t 4 "$0" | sponge "$0"' {} \;

La commande ci-dessus trouve tous les fichiers se terminant par l'extension cpp, transmet ces fichiers à la commande expand et la commande expand écrit la sortie dans les fichiers d'origine à l'aide de la commande sponge.

Vous pourriez penser que l'utilisation de la commande sed aurait été plus facile à ce stade, mais c'est entièrement votre choix.


Linux
  1. Convertissez des fichiers audio avec cette commande Linux polyvalente

  2. Commande Linux Tee avec exemples

  3. Linux expand Tutoriel de commande pour les débutants (avec exemples)

  4. Tutoriel de commande Linux tty pour les débutants (avec exemples)

  5. Comment convertir un PDF en JPG avec une ligne de commande sous Linux ?

Commande Curl sous Linux avec des exemples

Commande Echo sous Linux avec exemples

Commande Linux ip avec exemples

Commande Tr sous Linux avec des exemples

15 Commande Linux ps avec exemples

Commande de CD Linux avec exemples