Posso exportar uma tabela específica em um arquivo organizacional para csv a partir da linha de comando?


19

Eu tenho um arquivo organizacional com várias tabelas

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

Este arquivo é atualizado regularmente. Eu tenho um script Perl que analisa o csvarquivo obtido a partir da emissão M-x org-table-exporton first-table. Gostaria de poder exportar first-tablepara csv a partir da linha de comando, para não precisar fazer isso manualmente todas as vezes. Isso é possível?


1
Para obter o conteúdo da tabela em um arquivo organizacional, você pode fazê (org-babel-ref-resolve "first-table")-lo - isso fornecerá a tabela como uma lista e, em seguida, chame orgtbl-to-csvessa lista. Consulte a documentação de orgtbl-to-csvpara argumentos adicionais. Você pode então executar o Emacs no modo em lote para executar sua função usando --evalou -foptions.
Wdxvw 15/09/2015

Respostas:


24

Você pode procurar a tabela e usá org-table-export-la para exportá-la. Você pode colocar a função em um arquivo, carregá-lo e exportar em lote. Algo assim talvez:

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

Em seguida, com o seu arquivo de exemplo, você pode exportar em lote como este:

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

Minha busca pela tabela é um pouco grosseira, mas funciona.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.