On current master using ":sep" header argument does not work as expected and records are always split on whitespaces. For example:
#+begin_src sh :sep "\t" echo hello world echo test #+end_src #+RESULTS: | hello | world | | test | | It looks like the issue is in the org-babel-sh-evaluate function, where at the end it passes the result to the org-babel-import-elist-from-file function for processing. Replacing the code with the following seems to fix the issue: (let ((tmp-file (org-babel-temp-file "sh-")) (sep (or (cdr (assq :sep params)) "\t"))) (with-temp-file tmp-file (insert results)) (org-babel-import-elisp-from-file tmp-file sep)) Emacs : GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, X toolkit) of 2024-03-02 Package: Org mode version 9.6.21 ( @ /home/aragaer/.config/emacs/elpa/org-9.6.21/)