如何在emacs组织模式表中格式化一列数字?

Har*_*ton 12 sorting emacs bash org-mode

我在emacs中有一个表格org-mode.请问,有没有办法格式化第3列和第4列中的数字以垂直排列小数点?

注意,旁白:我使用bash sort命令对结果文件进行排序,并发现|每行开头的额外值被计为第1列,因此,例如,OUTPUT在此上下文中,列标题为4.

| CALL  | CHAN   |   OUTPUT |    INPUT | QTHR   | LOCATION       | NGR        | REGION   | CTCSS | KEEPER | Internet |
| GB3AH | RB11   |  433.275 |  434.875 | JO02KP | East Dereham   | TF94300990 | EAST ENG |  94.8 | G8PON  |          |
| GB3AS | RV48   |    145.6 |      145 | IO84LS | Wigton,Cumbria | NY33724123 | N.ENG    |    77 | G4KFN  |          |
| GB3AG | RV58   |  145.725 |  145.125 | IO86ON | Forfar         | NO48904170 | SCOT     |  94.8 | GM1CMF | Echolink |
| GB3AY | RV52   |   145.65 |   145.05 | IO75OR | Dalry          | NS26605190 | SCOT     | 103.5 | GM3YKE |          |
| GB3BA | RB01   |  433.025 |  434.625 | IO87SC | Banchory       | NJ72150255 | SCOT     |    67 | GM1XEA |          |
| GB3BD | RB06   |   433.15 |   434.75 | IO92RA | Ampthill       | TL01303860 | SE ENG   |    77 | G8MGP  |          |
| GB3AA | 23cm   |     1297 |     1291 | IO81RO | Alveston,Avon  | ST62608820 | SW ENG   | 118.8 | G4CJZ  |          |
| GB3AI | RV55   | 145.6875 | 145.0875 | IO91QQ | Amersham       | SU97089767 | SW ENG   |    77 | G0RDI  | Echolink |
| GB3AL | RV59   | 145.7375 | 145.1375 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |
| GB3AM | R50-13 |    50.84 |    51.34 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |
Run Code Online (Sandbox Code Playgroud)

abo*_*abo 19

以下是步骤:

  1. 这是一个可选的,使事情更具视觉效果. C-c }打开行号和列号的叠加层.相同的组合将关闭.请注意,这些不是缓冲区中的更改,它们只是工具提示.您可能希望C-c -在第一行上查看列号.
  2. 将光标移动到OUTPUT列并插入新列C-S-right.
  3. 您的光标现在应该在新列中.键入$4=$3;%0.3f,即将第三列复制到第四列,并将其格式化为具有3精度的浮点.按返回键,只需填写一个单元格.按此C-u C-c*键重新计算所有单元格.这也可以通过C-c C-c光标#+TBLFM:在线来完成.
  4. 您可以根据需要删除旧列C-M-left,并删除下面的表格公式.

更新:

感谢@phils的输入,这是另一种方式:

  1. 将光标移动到第3列中的任何数字,例如433.275.
  2. C-c =,光标移动到迷你缓冲区.
  3. 输入$0;%0.3f并按回车键.这里$0引用的是当前列,$3如果它是第3列也可以使用.
  4. C-u C-c*文档中的任意位置,或将光标移动到#+TBLFM:行并按C-c C-c.
  5. 对第4列重复相同的过程.

  • 看起来你也可以使用`$ 0;%0.3f`(即指定`$ 0`作为源)作为重新格式化当前列中值的公式(无需创建新列).因此,您可以在需要此格式的所有列中设置相同的公式,然后使用"Cu Cc*"重新计算表格显示,如图所示. (5认同)