2017-05-16 7 views
0

Voici mon dossier. J'essaie de maintenir une largeur constante entre mes sorties de sorte que tous les symboles de tuyau soient l'un en dessous de l'autre et cela ressemble à un format de table. Comment puis-je y parvenir? J'ai aussi besoin d'avoir le même format quand j'envoie la sortie.Comment bien imprimer un fichier délimité par des virgules?

cat file.txt 
name,score card,ID 
Jack,Available,YES 
Jen,NA,NO 
Jerry,Available,YES 
Padula,NA,YES 
Mackenzi,NA,NO 

sed 's/,/\t|\t/g' c.txt 
name |  score card  |  ID 
Jack |  Available  |  YES 
Jen  |  NA  |  NO 
Jerry |  Available  |  YES 
Padula |  NA  |  YES 
Mackenzi  |  NA  |  NO 

==I want== 
name  |  score card  |  ID 
Jack  |  Available  |  YES 
Jen  |  NA    |  NO 
Jerry  |  Available  |  YES 
Padula |  NA    |  YES 
Mackenzi |  NA    |  NO 
+0

Connaissez-vous les largeurs de colonnes nécessaires à l'avance? Ou pensez-vous déterminer la largeur maximale du contenu pour chaque colonne? Ce dernier nécessiterait deux passes avec n'importe quel outil. – Yunnosch

+0

La largeur maximale du contenu peut le faire comme colonne ici – Rockshell

+0

Oups, vous avez oublié d'envoyer votre code. StackOverflow consiste à aider les gens à corriger leur code. Ce n'est pas un service de codage gratuit. Tout code est meilleur que pas de code du tout. Le méta-code, même, montrera comment vous pensez qu'un programme devrait fonctionner, même si vous ne savez pas comment l'écrire. Essayez de nous montrer votre travail jusqu'ici dans un [MCVE] (http://stackoverflow.com/help/mcve), le résultat que vous attendiez et les résultats que vous avez obtenus, et nous vous aiderons à le comprendre. – ghoti

Répondre

5
$ sed 's/,/,|,/g' file | column -t -s, 
name  | score card | ID 
Jack  | Available | YES 
Jen  | NA   | NO 
Jerry  | Available | YES 
Padula | NA   | YES 
Mackenzi | NA   | NO 
+2

Ceci est vraiment soigné car il ne dépend pas du nombre de colonnes. – codeforester

+0

Salut Morton, La sortie semble être ce que je cherche dans la ligne de commande shell, mais quand j'envoie cette sortie, la largeur de la colonne est juste comme avant même pas. Comment puis-je obtenir le même format dans Mail? – Rockshell

+3

Utilisez une police de largeur constante dans votre courrier? Cela n'a rien à voir avec le shell ou votre question - créez n'importe quel fichier tabulaire à la main et essayez de l'envoyer par la poste. Déboguer ça. Maintenant, faites la même chose pour cette sortie. –

0

Si même chose si vous voulez archiver avec awk,

awk -F"," '{printf "%-10s%s%-10s%s%-10s\n", $1,OFS,$2,OFS,$3}' OFS="|" file.txt