क्या मैं कमांड लाइन से सीएसवी के लिए एक ऑर्ग फाइल में एक विशिष्ट तालिका निर्यात कर सकता हूं?


19

मैं कई तालिकाओं के साथ एक org फ़ाइल है

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

यह फ़ाइल नियमित रूप से अपडेट की जाती है। मैं एक पर्ल स्क्रिप्ट को पार्स करता है csvजारी करने से प्राप्त फ़ाइल M-x org-table-exportपर first-table। मैं first-tableकमांड लाइन से सीएसवी को निर्यात करने में सक्षम होना चाहता हूं, इसलिए मुझे हर बार मैन्युअल रूप से ऐसा करने की आवश्यकता नहीं है। क्या यह संभव है?


1
एक Org फ़ाइल में तालिका की सामग्री प्राप्त करने के लिए आप यह कर सकते हैं (org-babel-ref-resolve "first-table")- यह आपको सूची के रूप में तालिका देगा, और फिर orgtbl-to-csvउस सूची पर कॉल करें । orgtbl-to-csvअतिरिक्त तर्कों के लिए दस्तावेज़ देखें । आप बैच मोड में Emacs चला सकते हैं या तो अपने फ़ंक्शन का उपयोग करके --evalया -fविकल्पों को निष्पादित करने के लिए ।
wvxvw

जवाबों:


24

आप तालिका के लिए देख सकते हैं, और org-table-exportइसे निर्यात करने के लिए उपयोग कर सकते हैं। आप फ़ंक्शन को एक फ़ाइल में रख सकते हैं, इसे लोड कर सकते हैं, और बैच निर्यात कर सकते हैं। कुछ इस तरह से हो सकता है:

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

फिर अपनी उदाहरण फ़ाइल के साथ, आप इस तरह निर्यात कर सकते हैं:

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

तालिका के लिए मेरी खोज थोड़ा कच्चा है, लेकिन यह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.