I know we have some bashers (kshers? posixers?) around here. I was
writing an org-doc for my computer group, looking at gnuplot using
org-plot.
https://orgmode.org/worg/org-tutorials/org-plot.org
(Let me know if it gives you trouble)
I will also put up 'sample.csv' a; very ugly public data csv
Then we want to be able to evaluate shell:
#+begin_src elisp
(org-babel-do-load-languages 'org-babel-load-languages
'((shell . t)))
#+end_src
Now C-c C-c on a source block or call should ask to execute it, or
on a #+PLOT: line (with results) will gnuplot it. and here's me
trying to beat it into shape with shell in org-babel.
#+NAME: food
#+HEADER: :var IN="sample.csv" OUT="test-output.csv"
#+HEADER: :var MONTH="month-food.txt" COST="cost-food.txt"
#+HEADER: :var BEGIN=1 COUNT=12
#+HEADER: :var FOOD="apples" YEAR="2007"
#+begin_src shell
grep -i $FOOD < $IN | grep -i $YEAR | tail -n+$BEGIN | head -n$COUNT | cut -d',' -f2 | nl | tee $MONTH 1>&2
grep -i $FOOD < $IN | grep -i $YEAR | tail -n+$BEGIN | head -n$COUNT | cut -d',' -f3 | nl | tee $COST 1>&2
printf "%s %s\n" "month" "Price"
join $MONTH $COST | cut -d' ' -f2- | tee $OUT
#+end_src
#+PLOT: ind:1 deps:(2) with:histograms title:"foo"
#+RESULTS: food
| month | Price |
| 2007.01 | 3.89 |
| 2007.02 | 2.85 |
| 2007.03 | 2.22 |
| 2007.04 | 2.02 |
| 2007.05 | 1.89 |
| 2007.06 | 1.89 |
| 2007.07 | 1.98 |
| 2007.08 | 2.11 |
| 2007.09 | 2.13 |
| 2007.1 | 2.18 |
| 2007.11 | 2.55 |
| 2007.12 | 3.24 |
Now let's use it:
#+name: apples-2007
#+CALL: food(YEAR=2007, FOOD="apples")
#+PLOT: ind:1 deps:(2) labels:("month" "price/kg") with:histograms
#+RESULTS: apples-2007
And again:
#+name: bananas-2009
#+CALL: food(YEAR=2009, FOOD="bananas")
#+PLOT: ind:1 deps:(2) labels:("month" "price/kg") with:histograms
#+RESULTS: bananas-2009
sample.csv just has apple and banana prices for 2007, 2009 and
2011.