Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在emacs组织模式表中设置数字列的格式?_Bash_Sorting_Emacs_Org Mode - Fatal编程技术网

Bash 如何在emacs组织模式表中设置数字列的格式?

Bash 如何在emacs组织模式表中设置数字列的格式?,bash,sorting,emacs,org-mode,Bash,Sorting,Emacs,Org Mode,在emacsorg模式下,我有一个这样的表格。请问,有没有办法将第3列和第4列中的数字格式化,使小数点垂直排列 注意,旁白:我使用bashsort命令对结果文件进行排序,发现每行开头的额外|被计为第1列,因此,例如,在本上下文中,标题为OUTPUT的列是第4列 | CALL | CHAN | OUTPUT | INPUT | QTHR | LOCATION | NGR | REGION | CTCSS | KEEPER | Internet |

在emacs
org模式下,我有一个这样的表格。请问,有没有办法将第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  |          |
以下是步骤:

  • 这是一个可选的,使事情更直观一点。 C-C}打开行数和列数的覆盖。 相同的组合将关闭该选项。请注意,这些不是更改 在缓冲区中,它们只是工具提示。 你可能想做C-C-在第一行,看看 列编号
  • 将光标移动到
    OUTPUT
    列,并插入一个带有C-S-right的新列
  • 光标现在应该位于新列中。 键入
    $4=$3;%0.3f
    ,即将第三列复制到第四列, 并将其格式化为3精度的浮点。 按return键,只需填写一个单元格。 按C-u C-C*重新计算所有单元格。 这也可以用C-C-C和游标来完成 在
    #+TBLFM:
    行上
  • 如果需要,可以使用C-M-left删除旧列, 并删除下表公式
  • 更新: 感谢@phils的输入,这里有另一种方法:

  • 将光标移动到第3列中的任意数字,例如
    433.275
  • 按C-C=,光标移动到小缓冲区
  • 输入
    $0;%0.3f
    并按return键。 这里,
    $0
    指的是当前列,
    $3
    如果是第3列,也可以使用
  • 按文档中任意位置的C-u C-C*, 或者将光标移动到
    #+TBLFM:
    行,然后按C-C-C
  • 对第4列重复相同的过程

  • 谢谢你。请原谅我的无知,但我看不到这些命令是在哪里输入的,所以你能给出一些更详细的说明吗?可能在Org7和Org8版本之间有些行为已经改变了?在vanilla Emacs 24.3中,使用
    M-S-
    插入一个新列(当前列的左侧),并在列中键入
    C-C=
    ,开始在步骤3中输入公式。看起来您还可以使用
    $0;%0.3f
    (即指定
    $0
    作为源)作为公式,以重新格式化当前列中的值(无需创建新列)。因此,您可以在需要此格式的所有列中设置相同的公式,然后使用
    C-u C-C*
    重新计算表显示,如图所示。要使@phils的注释更明确,您可以这样做,例如,
    $3=(某些公式);%0.3f
    以格式化另一个公式的输出。为避免损失派生值(如列和)的精度,派生值应基于原始值,而不是重新格式化的值。要使原始值尽可能不可见,请将列宽设置为2,方法是将
    放置在列中的某个位置,然后重新对齐。看见