0
votes

Façon efficace d'éditer le fichier tabulaire de texte afin que chaque cellule commence à la même position

J'ai un fichier texte de structure de type table, chaque ligne contient 0 à 4 mots divisés par nombre arbitraire d'espaces. xxx

mon objectif est de modifier ce fichier dans un format où Les éléments commencent à la même position d'une même position, par exemple: xxx

Le nombre d'espaces est arbitraire. Je préfère les lignes commençant par un espace saute le premier élément, mais ce n'est pas strict.

Je pense qu'il y a beaucoup de façons de le faire, mon ordre de préférence est:

  1. sur Vim avec une tour nette
  2. par commande bash
  3. sur un éditeur de texte avec une telle fonctionnalité
  4. par langue de script (peut-être python)

    Comme il s'agit d'une partie du processus de préparation de données / validation, je n'ai pas besoin d'une méthode parfaite; Je vais effectuer une vérification manuelle après tout. Je cherche une façon qui fait, disons, 80 à 90% du travail.

    Quelqu'un peut-il suggérer une approche efficace?

    Si vous êtes utile, exemple de fichier est ici .


2 commentaires

Column -t Fichier (ou :%! Colonne -T à partir de Vim) fait ce que vous voulez, à l'exception du "droit aligné" (c.-à-d. Remplir d'abord de l'espace) . Je ne connais pas de manière facile / directe de faire cette dernière partie.


@Marth c'est très utile.


3 Réponses :


3
votes

Voici un moyen d'obtenir colonne code> pour respecter les principaux espaces: modifier un espace de tête à un autre caractère

hello   world        this     is
        an           example  file
is      there        a        good
way     to           clean    this
        your         help     is
highly  appreciated


0 commentaires

2
votes

Module RE de Python, .format () offre une bonne approche du 4. .

La largeur de la colonne est basée sur le Longueur de la chaîne la plus longue non-whitespace de votre fichier + colonne_pad Valeur.

Vous pouvez jouer avec colonne_pad pour faire varier la largeur de la colonne. < / P>

Si vous passez dans renommé_file = true , vous obtiendrez un nouveau fichier nommé 'nettoyé_ nom de fichier ". Sinon, le script remplacera le fichier d'origine avec le fichier nettoyé. xxx

sortie: xxx


0 commentaires

2
votes

Vous pouvez utiliser le https://github.com/junegunn/vim-asy-align plugin pour aligner divers délimiteurs

Sélectionnez simplement les lignes, appuyez sur:

  • : plan vers (easyalign)
  • : Aperçu en direct, facultatif
  • * : alignement tous les délimiteurs
  • : Basculer jusqu'à ce que cela puisse aligner les délimiteurs
  • \ s \ @ <= \ s \ + : Sélectionnez Non-espace après l'espace comme Délimiteur

    ou utilisez la commande: '<,'> easyalign * / \ s \ @ <= \ s \ + / dl


1 commentaires

Merci pour une solution VIM. Je vais essayer cela.