复制的表格,里面有个很多 =“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