我有以下文本文件:
[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%)
我想修复列的对齐。 显然我可以导入电子表格或其他东西,但我想留在终端内。
编辑:使用扩展我可以在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%)
答案 0 :(得分:48)
像列一样的解决方案就是你想要的。
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%)
答案 1 :(得分:11)
这可能对您有用:
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%)
答案 2 :(得分:2)
找到它:
cat output.txt | expand --tabs=14
答案 3 :(得分:1)
这会使用awk将您的文件打印在三列中,因为您询问的是:
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
如果您有这种感觉,您可能会想到并控制最后一栏的格式,但我怀疑这是另一个问题的主题。
答案 4 :(得分:0)
如果您正在处理JSON数据,column-layout
会有所帮助:https://github.com/75lb/column-layout