Czy mogę wyeksportować określoną tabelę z pliku org do csv z wiersza poleceń?

19

Mam plik org z wieloma tabelami

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

Ten plik jest regularnie aktualizowany. Mam skrypt Perla, który analizuje csvplik otrzymany od wystawienia M-x org-table-exportna first-table. Chciałbym móc eksportować first-tabledo csv z wiersza poleceń, więc nie muszę tego robić ręcznie za każdym razem. czy to możliwe?

Brian Fitzpatrick
źródło
1
Aby uzyskać zawartość tabeli w pliku Org, możesz to zrobić (org-babel-ref-resolve "first-table")- da to tabelę jako listę, a następnie wywoła tę orgtbl-to-csvlistę. Zobacz dokumentację orgtbl-to-csvdla dodatkowych argumentów. Następnie możesz uruchomić Emacsa w trybie wsadowym, aby wykonać swoją funkcję za pomocą --evallub -fopcji.
wvxvw,

Odpowiedzi:

24

Możesz poszukać tabeli i użyć jej org-table-exportdo wyeksportowania. Możesz umieścić funkcję w pliku, załadować ją i eksportować wsadowo. Coś takiego może być:

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

Następnie za pomocą przykładowego pliku możesz eksportować zbiorczo w następujący sposób:

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

Moje wyszukiwanie tabeli jest nieco prymitywne, ale działa.

suvayu
źródło