有没有一个org-mode的表格内替换函数?

复制的表格,里面有个很多 =“xxxx.xxx” 需要处理

就是去掉= 、" 、 " ,变成空格也行,这样表格里的值就是数值,可以数值排序

我能想到的就是rectangel操作,但是没找到函数

先用 org-tree-to-indirect-buffer 把表格的heading独立到另一个单独的buffer,然后在里面用replace-regexp替换="\(.*\..*\)"\1就行吧。

方法1: 可以直接使用 formula,在表格下面加 #+TBLFM: @1$1..@>$> ='(replace-regexp-in-string "[^[:digit:].-]" "" @0$0),然后 C-c C-c 调用即可

方法2: 可以用代码重新得出一个表格

#+name: tbl
|qwe123|qwe234|

#+begin_src emacs-lisp :var data=tbl
  (mapcar (lambda (line)
            (mapcar (lambda (ele)
                      (replace-regexp-in-string "[^[:digit:].-]" "" ele))
                    line))
          data)
#+end_src

#+RESULTS:
| 123 | 234 |

如果你用 evil, 30s 录个宏应该就解决了

不太熟悉 emacs 原生的宏录制,理论上应该也能做到?印象里在哪儿看过说 evil 模拟的宏底层还是 emacs 宏

写到寄存器里大概就是 ghf=vdghf"vdgh;vdghf=vdghf"vdgh;vdghf=vdghf"vdghf+vdghf"vdj 这样,然后在表格第一个数据行执行看看效果,正确的话批量执行即可

感谢,用了方法1;

其他栏还有字母

不懂lisp,用了两行公式,第一行把=替换成空格,第二行把" 替换成空格

一切皆是文本,直接文本替换的操作就好啦,选中区域,replace-string / replace-regexp

光谱数据,几千行,手工搞不过来

匹配上后一个!全换了。

M-x replace-regexp 就是全部替换,为啥需要手工。

另外,replace-regexp 很强大,在替换的字符串中,还可以引用正则匹配的子表达式,\0 \1, \2 这种。一个 replace-regexp 足以满足绝大多数的个性化的替换需求。

你这个说的是 query-replace

1 个赞