See the code below: #+NAME: ansi-escape-filter #+begin_src emacs-lisp :var data="" (with-temp-buffer (insert data) (ansi-color-apply-on-region (point-min) (point-max)) (buffer-string)) #+end_src #+RESULTS: ansi-escape-filter #+begin_src sh :dir /sudo:: :results output :post ansi-escape-filter(data=*this*) tree /var/spool/postfix/ #+end_src `:results output` is needed to avoid parsing the shell output as a table. `data=*this*` is needed to pass the output to `ansi-escape-filter`. You can also check the example in the org info page for the :post header argument. Best, Ihor stardiviner writes: > I want to processing the shell ANSI escaping characters correctly or > just filter them out for display result correctly in Emacs. > > Here is my try: > > #+NAME: ansi-escape-filter > #+begin_src emacs-lisp > (ansi-color-apply-on-region (point-min) (point-max)) > #+end_src > > #+begin_src sh :dir /sudo:: :post ansi-escape-filter > sudo tree /var/spool/postfix/ > #+end_src > > #+RESULTS[<2019-01-19 10:58:39> f6d16244322abbd4fbe01bfaa084ac6bdd66a62c]: > : nil > > The second source block's result is supposed to be result of command > =sudo tree /var/spool/postfix/= instead of =nil=. > > Can someone help me how to do this correctly? > > -- > [ stardiviner ] > I try to make every word tell the meaning what I want to express. > > Blog: https://stardiviner.github.io/ > IRC(freenode): stardiviner, Matrix: stardiviner > GPG: F09F650D7D674819892591401B5DF1C95AE89AC3 > >