Bisakah saya mengekspor tabel tertentu dalam file org ke csv dari baris perintah?

19

Saya memiliki file org dengan beberapa tabel

$ 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 |

File ini diperbarui secara berkala. Aku punya script perl yang mem-parsing csvfile yang diperoleh dari penerbitan M-x org-table-exportdi first-table. Saya ingin dapat mengekspor first-tableke csv dari baris perintah jadi saya tidak harus melakukan ini secara manual setiap waktu. Apakah ini mungkin?

Brian Fitzpatrick
sumber
1
Untuk mendapatkan konten tabel dalam file Org yang dapat Anda lakukan (org-babel-ref-resolve "first-table")- ini akan memberi Anda tabel sebagai daftar, dan kemudian memanggil orgtbl-to-csvdaftar itu. Lihat dokumentasi orgtbl-to-csvuntuk argumen tambahan. Anda kemudian dapat menjalankan Emacs dalam mode batch untuk menjalankan fungsi Anda baik menggunakan --evalatau -fopsi.
wvxvw

Jawaban:

24

Anda dapat mencari tabel, dan gunakan org-table-exportuntuk mengekspornya. Anda dapat menempatkan fungsi dalam file, memuatnya, dan mengekspor batch. Sesuatu seperti ini mungkin:

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")))))

Kemudian dengan file contoh Anda, Anda dapat mengekspor batch seperti ini:

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

Pencarian saya untuk tabel agak kasar, tetapi berhasil.

suvayu
sumber