想要在易理解的剧本项目中使用awk命令



这是我的剧本,如果我用awk命令放第四个项目,并用下面的双引号,它就不起作用:

tasks:
- shell: "{{item}}"
with_items:
- hostname
- df -kh
- uptime
- grep -i diameter /tmp/PSC-CIPDiameter_8.1_*_1.stat.0 | awk -F"," '{ if ($4!=0 || $5!=0|| $6!=0) print "Diameter  Time : "$1 "   Success: "$3 "    Fail: " $4" Timeout: " $5" Reject: " $6}' 
register: test
- debug:
msg: "{{test.results|map(attribute='stdout_lines')|list}}"

将awk代码放入从模板创建的文件中。通过这种方式,您可以单独测试代码并提高代码的可读性。例如,模板

shell> cat templates/script01.j2.awk 
{
if ($4!=0 || $5!=0|| $6!=0)
print "Diameter Time:" $1 " Success:" $3 " Fail:" $4 " Timeout:" $5 " Reject:"$6;
}

和战术手册

- hosts: localhost
tasks:
- template:
src: script01.j2.awk
dest: script01.awk
- shell: "{{ item }}"
loop:
- uptime
- "echo 1,2,3,4,5,6 | awk -F',' -f script01.awk"
register: test
- debug:
msg: "{{ test.results|map(attribute='stdout')|list }}"

给出

"msg": [
" 17:05:13 up 3 days, 13:42,  1 user,  load average: 1.93, 1.45, 1.74",
"Diameter Time:1 Success:3 Fail:4 Timeout:5 Reject:6"
]

最新更新