数据格式化(:wrap)
json格式化
#+BEGIN_SRC sh :results code :wrap SRC js :exports both
curl http://httpbin.org/get
#+END_SRC
#+RESULTS:
#+BEGIN_SRC js
{
"args": {},
"headers": {
"Accept": "*/*",
"Connection": "close",
"Host": "httpbin.org",
"User-Agent": "curl/7.47.0"
},
"origin": "180.167.20.58",
"url": "http://httpbin.org/get"
}
#+END_SRC
其他格式化
#+BEGIN_SRC sh :wrap QUOTE :results raw :exports both
date
#+END_SRC
#+RESULTS:
#+BEGIN_QUOTE
Fri Nov 3 23:05:34 CST 2017
#+END_QUOTE
变量设置在Header中
** 变量设置在Header中
:PROPERTIES:
:ID: d7b197d7-f925-47b7-bcc0-37e182761619
:header-args:shell: :var host="google.com" :results pp :session brantou :exports both
:END:
#+BEGIN_SRC shell
ping $host -c 2
#+END_SRC
#+RESULTS:
:
: $ PING google.com (192.168.83.230) 56(84) bytes of data.
: 64 bytes from 192.168.83.230: icmp_seq=1 ttl=128 time=9.60 ms
: 64 bytes from 192.168.83.230: icmp_seq=2 ttl=128 time=25.4 ms
:
: --- google.com ping statistics ---
: packet loss, time 1001ms
: rtt min/avg/max/mdev = 9.609/17.508/25.408/7.900 ms
覆盖变量 *host* 和 *session* 置为空!
#+BEGIN_SRC shell :var host="baidu.com" :session none
ping $host -c 2
#+END_SRC
#+RESULTS:
: PING baidu.com (111.13.101.208) 56(84) bytes of data.
: 64 bytes from 111.13.101.208: icmp_seq=1 ttl=128 time=35.5 ms
: 64 bytes from 111.13.101.208: icmp_seq=2 ttl=128 time=49.2 ms
:
: --- baidu.com ping statistics ---
: 2 packets transmitted, 2 received, 0% packet loss, time 1002ms
: rtt min/avg/max/mdev = 35.517/42.361/49.206/6.847 ms
结果的预处理(:post)
#+NAME: img_wrap
#+BEGIN_SRC python :var img_path="" :results output
img_path=img_path.replace('[[file:..', '').replace(']]', '')
print('<img src="'+img_path+'" />')
#+END_SRC
#+HEADER: :file ../images/devOps/just-try-post.png :exports both
#+BEGIN_SRC plantuml :mkdirp yes :post img_wrap(img_path=*this*) :wrap EXPORT html
@startuml
cli -> serv: auth req
serv --> cli: auth res
@enduml
#+END_SRC
#+RESULTS:
#+BEGIN_EXPORT html
<img src="/images/devOps/just-try-post.png" />
#+END_EXPORT
noweb的引用(:noweb-ref)
#+HEADER: :tangle ../src/devOps/noweb_ref.sh :mkdirp yes
#+BEGIN_SRC shell :noweb yes :shebang #!/bin/sh
<<fullest-disk>>
#+END_SRC
** the mount point of the fullest disk
:PROPERTIES:
:header-args:shell: :noweb-ref fullest-disk
:END:
*** query all mounted disks
#+BEGIN_SRC shell
df \
#+END_SRC
*** strip the header row
#+BEGIN_SRC shell
|sed '1d' \
#+END_SRC
*** sort by the percent full
#+BEGIN_SRC shell
|awk '{print $5 " " $6}' | sort -n | tail -1 \
#+END_SRC
*** extract the mount point
#+BEGIN_SRC shell
|awk '{print $2}'
#+END_SRC
tangle出的代码如下:
#!/bin/sh
df \
|sed '1d' \
|awk '{print $5 " " $6}' | sort -n | tail -1 \
|awk '{print $2}'
预处理/后置操作(:prologue/:epilogue)
在做相关操作时,可能需要预先初始化,同时又不想这些初始化过程出现在代码流程中,
这个时候你可使用 *:prologue* 来关联相关语句来达到预处理的效果。
#+NAME: prologue-example
#+BEGIN_SRC shell :prologue "echo yep; exit 0" :exports both
echo "nope"
#+END_SRC
#+RESULTS: prologue-example
: yep
*:epilogue* 正好和 *:prologue* 完成的功能相反,用于后置处理,完成清理工作。
#+BEGIN_SRC shell :epilogue "exit 0; echo yep" :exports both
echo "nope"
#+END_SRC
#+RESULTS:
: nope
批量执行
可在命令行中调用代码块实现的函数,如下面所示:
#!/bin/sh
# -*- mode: shell-script -*-
#
# tangle files with org-mode
#
DIR='pwd'
FILES=""
# wrap each argument in the code required to call tangle on it
for i in $@; do
FILES="$FILES \"$i\""
done
emacs -Q --batch \
--eval "(progn
(require 'org)(require 'ob)(require 'ob-tangle)
(mapc (lambda (file)
(find-file (expand-file-name file \"$DIR\"))
(org-babel-tangle)
(kill-buffer)) '($FILES)))" 2>&1 | grep tangled
连接mysql
#+BEGIN_SRC sql
show tables;
#+END_SRC
#+RESULTS:
| Tables_in_mysql |
|---------------------------|
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
#+BEGIN_SRC sql
SELECT host, user FROM user WHERE 1;
#+END_SRC
#+RESULTS:
| host | user |
|-----------+------------------|
| % | brantou |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |