Tôi có thể xuất một bảng cụ thể trong tệp org sang csv từ dòng lệnh không?


19

Tôi có một tệp org với nhiều bảng

$ cat ~/foo.org
#+Title: hello world

* section 1

lorem ipsum

#+TBLNAME: first-table
| i      | want | to    |
| export | this | table |

#+TBLNAME: second-table
| this | table | is        |
| not  | as    | important |

Tập tin này được cập nhật thường xuyên. Tôi có một tập lệnh perl phân tích cú pháp csvtệp thu được từ việc phát hành M-x org-table-exporttrên first-table. Tôi muốn có thể xuất first-tablesang csv từ dòng lệnh để tôi không phải thực hiện thủ công mỗi lần. Điều này có thể không?


1
Để có được nội dung của bảng trong tệp Org bạn có thể làm (org-babel-ref-resolve "first-table")- việc này sẽ cung cấp cho bạn bảng dưới dạng danh sách, sau đó gọi orgtbl-to-csvvào danh sách đó. Xem tài liệu của orgtbl-to-csvcác đối số bổ sung. Sau đó, bạn có thể chạy Emacs trong chế độ hàng loạt để thực thi chức năng của mình bằng cách sử dụng --evalhoặc -ftùy chọn.
wvxvw

Câu trả lời:


24

Bạn có thể tìm bảng và sử dụng org-table-exportđể xuất nó. Bạn có thể đặt chức năng trong một tệp, tải nó và xuất hàng loạt. Một cái gì đó như thế này có thể:

setup.el:

(require 'org)

(defun my-tbl-export (name)
  "Search for table named `NAME` and export."
  (interactive "s")
  (show-all)
  (let ((case-fold-search t))
    (if (search-forward-regexp (concat "#\\+NAME: +" name) nil t)
    (progn
      (next-line)
      (org-table-export (format "%s.csv" name) "orgtbl-to-csv")))))

Sau đó, với tệp ví dụ của bạn, bạn có thể xuất hàng loạt như thế này:

$ emacs --batch foo.org -l setup.el --eval '(my-tbl-export "first-table")'

Tìm kiếm của tôi cho bảng là một chút thô, nhưng nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.