次のテキストファイルがあります。
[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%)
列のalignmentを修正したいと思います。明らかに、スプレッドシートなどにインポートできますが、ターミナル内に残したいです。
編集:拡張を使用すると、Ubuntuで目的の結果を得ることができますが、これが最良の方法ですか?
[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%)
列のようなソリューションはあなたが望むものです。
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%)
これはあなたのために働くかもしれません:
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%)
それを見つけた:
cat output.txt | expand --tabs=14
これにより、awkを使用して3つの列にファイルが印刷されます。
cat output.txt | \
awk -v cols=3 '{printf("%-44s",$0)} NR%cols==0 {print ""} END {print ""}'
編集:
出力が一貫して単一のTABを使用して列を分離している場合、これまで見てきたように、展開が機能します。 Bu "awk"は、書式設定をより完全に制御できるため、この種のタスクにより適しています。 Awk(デフォルト)は、すべての空白をフィールド区切り文字と見なします(したがって、「」と「^ I」と「^ I」はすべて単一のフィールド区切り文字です)。
質問の更新後、これがあなたが探しているもののようです:
awk '{ printf("%-10s%8s%8s %s\n", $1, $2, $3, $4); }' < output.txt
フォーマットをもう少し制限したい場合は、次を使用できます。
awk '{ printf("%-10s%8.2f%8.2f %s\n", $1, $2, $3, $4); }' < output.txt
気に入れば、最後の列の形式を空想して制御することもできますが、それは別の質問のトピックだと思います。
jSONデータを扱う場合は、column-layout
が役立ちます: https://github.com/75lb/column-layout