Kann ich eine bestimmte Tabelle in einer Organisationsdatei über die Befehlszeile nach csv exportieren?

19

Ich habe eine Organisationsdatei mit mehreren Tabellen

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

Diese Datei wird regelmäßig aktualisiert. Ich habe ein Perl-Skript, das die csvDatei analysiert, die von der Ausgabe M-x org-table-exportam erhalten wird first-table. Ich möchte in der Lage sein, first-tablevon der Kommandozeile nach csv zu exportieren , damit ich dies nicht jedes Mal manuell tun muss. Ist das möglich?

Brian Fitzpatrick
quelle
1
Um den Inhalt der Tabelle in eine Org-Datei zu bekommen, können Sie dies tun (org-babel-ref-resolve "first-table")- dies gibt Ihnen die Tabelle als Liste und ruft dann orgtbl-to-csvdiese Liste auf. orgtbl-to-csvWeitere Argumente finden Sie in der Dokumentation von . Sie können Emacs dann im Batch-Modus ausführen, um Ihre Funktion entweder mit --evaloder -foptions auszuführen .
wvxvw

Antworten:

24

Sie können die Tabelle suchen und org-table-exportzum Exportieren verwenden. Sie können die Funktion in eine Datei einfügen, sie laden und im Batch exportieren. So etwas vielleicht:

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

Dann können Sie mit Ihrer Beispieldatei einen Batch-Export durchführen:

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

Meine Suche nach dem Tisch ist etwas grob, aber es funktioniert.

suvayu
quelle