J'ai le fichier texte suivant:
[master]$ cat output.txt
CHAR.L 96.88 -6.75 (-6.49%)
MXP.L 12.62 -1.00 (-7.41%)
NEW.L 7.88 -0.75 (-8.57%)
AGQ.L 17.75 -0.62 (-3.40%)
RMP.L 13.12 -0.38 (-2.75%)
RRR.L 3.35 -0.20 (-5.71%)
RRL.L 7.95 -0.15 (-1.85%)
SOU.L 1.73 -0.10 (-5.22%)
YELL.L 5.47 -0.04 (-0.73%)
AMC.L 9.75 -0.01 (-0.05%)
PLU:USOP 95.40 0.00 (+0%)
BP-.L 452.10 0.95 (+0.21%)
SXX.L 29.00 1.50 (+5.41%)
LLOY.L 26.78 1.64 (+6.52%)
DES.L 23.62 2.25 (+10.34%)
GKP.L 171.62 4.50 (+2.69%)
XEL.L 83.75 5.00 (+6.33%)
BARC.L 190.57 9.80 (+5.43%)
RKH.L 251.62 12.00 (+5.02%)
UKX.L 5529.21 45.44 (+0.83%)
Je voudrais fixer le alignement des colonnes. Évidemment, je peux importer dans un tableur ou autre chose, mais j'aimerais rester dans le terminal.
EDIT: En utilisant expand, je peux obtenir le résultat souhaité sur Ubuntu, mais est-ce le meilleur moyen?
[master]$ cat output.txt | expand -t24
CHAR.L 96.88 -6.75 (-6.49%)
AMC.L 9.75 -0.01 (-0.05%)
PLU:USOP 95.40 0.00 (+0%)
la solution comme la colonne est ce que vous voulez.
me@home$ column -t output.txt
CHAR.L 96.88 -6.75 (-6.49%)
MXP.L 12.62 -1.00 (-7.41%)
NEW.L 7.88 -0.75 (-8.57%)
AGQ.L 17.75 -0.62 (-3.40%)
RMP.L 13.12 -0.38 (-2.75%)
RRR.L 3.35 -0.20 (-5.71%)
RRL.L 7.95 -0.15 (-1.85%)
SOU.L 1.73 -0.10 (-5.22%)
YELL.L 5.47 -0.04 (-0.73%)
AMC.L 9.75 -0.01 (-0.05%)
PLU:USOP 95.40 0.00 (+0%)
BP-.L 452.10 0.95 (+0.21%)
SXX.L 29.00 1.50 (+5.41%)
LLOY.L 26.78 1.64 (+6.52%)
DES.L 23.62 2.25 (+10.34%)
GKP.L 171.62 4.50 (+2.69%)
XEL.L 83.75 5.00 (+6.33%)
BARC.L 190.57 9.80 (+5.43%)
RKH.L 251.62 12.00 (+5.02%)
UKX.L 5529.21 45.44 (+0.83%)
Cela pourrait fonctionner pour vous:
pr -tw132 -3 output.txt
CHAR.L 96.88 -6.75 (-6.49%) SOU.L 1.73 -0.10 (-5.22%) DES.L 23.62 2.25 (+10.34%)
MXP.L 12.62 -1.00 (-7.41%) YELL.L 5.47 -0.04 (-0.73%) GKP.L 171.62 4.50 (+2.69%)
NEW.L 7.88 -0.75 (-8.57%) AMC.L 9.75 -0.01 (-0.05%) XEL.L 83.75 5.00 (+6.33%)
AGQ.L 17.75 -0.62 (-3.40%) PLU:USOP 95.40 0.00 (+0%) BARC.L 190.57 9.80 (+5.43%)
RMP.L 13.12 -0.38 (-2.75%) BP-.L 452.10 0.95 (+0.21%) RKH.L 251.62 12.00 (+5.02%)
RRR.L 3.35 -0.20 (-5.71%) SXX.L 29.00 1.50 (+5.41%) UKX.L 5529.21 45.44 (+0.83%)
RRL.L 7.95 -0.15 (-1.85%) LLOY.L 26.78 1.64 (+6.52%)
Trouvé le:
cat output.txt | expand --tabs=14
Ceci imprime votre fichier en trois colonnes à l’aide de awk, puisque c’est ce que vous avez demandé:
cat output.txt | \
awk -v cols=3 '{printf("%-44s",$0)} NR%cols==0 {print ""} END {print ""}'
MODIFIER:
Si votre sortie utilise systématiquement des tabulations uniques pour séparer des colonnes, alors expand fonctionnera pour vous, comme vous l'avez vu. Bu "awk" est plus adapté à ce type de tâche, car il vous permettra de contrôler plus complètement le formatage. Awk (par défaut) considère que tous les espaces sont des séparateurs de champs ("" et "^ I" et "^ I" sont donc tous des séparateurs de champs simples).
Après la mise à jour de la question, il semble que c’est ce que vous recherchez:
awk '{ printf("%-10s%8s%8s %s\n", $1, $2, $3, $4); }' < output.txt
Si vous voulez restreindre un peu plus le format, vous pouvez utiliser:
awk '{ printf("%-10s%8.2f%8.2f %s\n", $1, $2, $3, $4); }' < output.txt
Vous pourriez avoir envie et contrôler le format de la dernière colonne si vous en aviez envie, mais je suppose que c'est le sujet d'une autre question.
si vous utilisez des données JSON, column-layout
vous aidera: https://github.com/75lb/column-layout