csv-to-org-table
文件的内容:
使用举例:
~$ echo foo,bar,baz | csv-to-org-table
|-----+-----+-----|
| foo | bar | baz |
|-----+-----+-----|
或用个 org-agenda
的例子:
~$ emacs --batch --load ~/.emacs.d/init.el --eval '(org-batch-agenda-csv "i")' | csv-to-org-table
|-------+-------------------------------------------------------+-----------+------+---+---+---+---+---+------+---|
| inbox | View org-agenda from the command line (outside Emacs) | tagsmatch | DONE | | | | | | 1000 | |
| inbox | Show CSV as Org mode table from the command line | tagsmatch | TODO | | | | | | 1000 | |
| inbox | Is it possible to run org code block from shell? | tagsmatch | TODO | | | | | | 1000 | |
| inbox | Extract headings of org mode files in shell | tagsmatch | TODO | | | | | | 1000 | |
|-------+-------------------------------------------------------+-----------+------+---+---+---+---+---+------+---|
7 个赞
默认有 999 行的限制:
Region is longer than ‘org-table-convert-region-max-lines’ (999) lines; not converting
实测 3000多行(100k) 的文件性能也还可以:
$ cat ./address.csv | time csv-to-org-table
|---------+--------------------------------+---+-------|
| 111 | 北京 | 1 | 0 |
| 112 | 天津 | 1 | 0 |
| 113 | 河北 | 1 | 0 |
| 114 | 山西 | 1 | 0 |
| 115 | 内蒙古 | 1 | 0 |
| 121 | 辽宁 | 1 | 0 |
| 122 | 吉林 | 1 | 0 |
| 123 | 黑龙江 | 1 | 0 |
| 131 | 上海 | 1 | 0 |
...
| 1651399 | 其他区县 | 3 | 16513 |
| 2617 | 阿勒泰市 | 3 | 16514 |
| 1651402 | 布尔津县 | 3 | 16514 |
| 1651403 | 富蕴县 | 3 | 16514 |
| 1651404 | 福海县 | 3 | 16514 |
| 1651405 | 哈巴河县 | 3 | 16514 |
| 1651406 | 青河县 | 3 | 16514 |
| 1651407 | 吉木乃县 | 3 | 16514 |
| 1651499 | 其他区县 | 3 | 16514 |
|---------+--------------------------------+---+-------|
1.28 real 0.70 user 0.08 sys
(1- num)
竟然是num-1,已经有了(- num 1)
为什么还会存在这个函数。。
简写形式,好写。。。和 ++1 1++ 不是一样的道理
给 @tumashu 的论断举个例子:
(mapcar #'1- '(1 2 3))
=> (0 1 2)
(mapcar (lambda (elt) (- elt 1)) '(1 2 3))
=> (0 1 2)
另外,可能 -1
比 1-
要合理些,但是 -1
是个数字,且不能作为函数名。
不 byte-compile 的话或许是的,如果 byte-compile 的话就完全不存在这个差别了,因为 byte-compiler 知道 (+ x 1)
的意思是 (1+ x)
:
(byte-compile (lambda (x) (+ x 1)))
=> #[(x) "T\207" [x] 1]
(byte-compile (lambda (x) (1+ x)))
=> #[(x) "T\207" [x] 1]
无论如何,我觉得使用 (+ x 1)
还是 (1+ x)
是个代码风格问题,看个人喜好而定,比方说如果遇到有人刻意避免使用 1+
也不必惊讶。
1 个赞
添加可执行权限(chmod +x),前提是你的操作系统支持全分解 Shebang,比如 macOS 支持,Linux 应该不支持,不支持的话,直接用 emacs 调用脚本,用
$ echo foo,bar,baz | emacs --batch --load path/to/csv-to-org-table
1 个赞