Quelle est la façon la plus efficace de convertir des données séparées par des tabulations comme celle-ci:
a b c d cat
NULL NULL NULL NULL NULL
NULL NULL NULL d d
NULL NULL c NULL c
NULL NULL c d c; d
NULL b NULL NULL b
NULL b NULL d b; d
NULL b c NULL b; c
NULL b c d b; c; d
a NULL NULL NULL a
a NULL NULL d a; d
a NULL c NULL a; c
a NULL c d a; c; d
a b NULL NULL a; b
a b NULL d a; b; d
a b c NULL a; b; c
a b c d a; b; c; d
Quelque chose de proche:
a | b | c | d | cat
-----+------+------+------+-----------
NULL | NULL | NULL | NULL | NULL
NULL | NULL | NULL | d | d
NULL | NULL | c | NULL | c
NULL | NULL | c | d | c; d
NULL | b | NULL | NULL | b
NULL | b | NULL | d | b; d
NULL | b | c | NULL | b; c
NULL | b | c | d | b; c; d
a | NULL | NULL | NULL | a
a | NULL | NULL | d | a; d
a | NULL | c | NULL | a; c
a | NULL | c | d | a; c; d
a | b | NULL | NULL | a; b
a | b | NULL | d | a; b; d
a | b | c | NULL | a; b; c
a | b | c | d | a; b; c; d
Actuellement, j'utilise Notepad ++ comme suit:
- Convertir des tabulations en espaces
- Alignez les données manuellement
- Utiliser le mode colonne pour insérer les tuyaux
La deuxième étape est la plus fastidieuse et je préfère avoir au moins cette partie automatisée.
Remarque: J'utilise un navigateur lorsque je travaille et parfois j'ai un éditeur de texte ouvert à côté. La solution efficace est celle qui nécessite le moins d'effort. Je peux utiliser:
- Bloc-notes ++
- Éditeur de texte générique avec prise en charge de la recherche / remplacement d'expressions rationnelles
- JavaScript tapé dans la console du navigateur
- Service Web en ligne
- PHP en ligne de commande (
php -a
)
conversion
csv
text-formatting
ascii
Salman A
la source
la source
awk
script.{{(⊃⍵)⍪⍉⍪↑¨↓⍉↑1↓⍵}s¨'⎕T'⎕T¨(s←1↓¨⊢⊂⍨⊢=⊃)¯1⌽⍵}
semble assez agréable pour travailler, hein?)Réponses:
Comment puis-je convertir des valeurs séparées par des tabulations en une table ASCII?
J'utilise Générateur de tables de texte pour ce genre de tâche.
J'ai collé vos données sur cette page et cela a créé le tableau suivant:
Vous pouvez ensuite copier cette sortie (le générateur a fait la plupart du travail), coller dans le bloc-notes ++ et nettoyer le cas échéant.
la source
Si vous avez besoin d'une solution en ligne de commande, vous pouvez également utiliser pandoc avec le filtre pandoc-placetable .
Placez votre table
foo.txt
et exécutez:Ce qui se traduit par ce qui suit
output.md
:Pour lire à partir de STDIN, omettez l'
--file
argument. Pour imprimer sur STDOUT, omettez l'-o
argument.la source
L'idée de ruslan d'utiliser la
column
commande Unix / Linux est bonne, mais la ligne de commande donnée dans leur réponse ne fonctionne pas tout à fait. Tout d'abord,column
ne reconnaît pas\t
(ou\\t
) sur la ligne de commande comme un onglet. Si vous en avezbash
, vous pouvez le faireSinon, vous pouvez faire
Mais même cela ne répond pas à la question. Vous pouvez obtenir les barres verticales en faisant
qui produit une sortie comme
Ajouter la ligne de tiret après l'en-tête manuellement n'est pas si fastidieux.
Si vous n'avez pas accès à un système Unix / Linux complet, vous pouvez utiliser Cygwin ou l'un des autres likes Unix pour cela.
la source
set ts=4
paramètre Vim ).