***localhost : ok=3 changed=1 unreachable=0 failed=0
## 解决方案
> 请注意以下操作可能涉及版本差异,务必在操作前备份。
### 方案1:使用`tr`命令替换换行为空格
如果你只是想将多行输出转换成单行输出,可以使用`tr`命令将换行符替换为空格。然而,这可能会导致输出的一部分信息丢失,因为换行符通常用于分隔不同的信息。
使用以下命令来实现这一点:
```bash
ansible-playbook playbookname.yaml | tr '\n' ' '
上述命令将playbook的输出通过管道传递给tr
命令,将换行符替换为空格。但需要注意的是,这可能会使输出变得难以阅读,因为所有信息都会挤在一行中。
方案2:使用awk命令提取所需信息
如果你的目标是解析最后一行的信息,可以使用awk
命令来提取需要的信息。以下命令将从输出中提取ok
、changed
、unreachable
和failed
的值,并将其显示在单行中。
ansible-playbook playbookname.yaml | awk '/ok=/ { for (i=3; i < 7; i++) { split($i,a,"="); printf a[1]":"a[2]" " } }'
在上述命令中,awk
会选择包含ok=
的行,并将每个key=value
字段(从第3个到第6个)以=
为分隔符拆分。这样可以获取键作为数组a
的第一个元素,值作为第二个元素。最终,输出将显示为ok:3 changed:1 unreachable:0 failed:0
。
请注意,使用print
替代printf
可以将每个状态显示在不同的行上,以增加可读性。
方案3:自定义回调插件
如果上述方法不能满足你的需求,你还可以考虑编写自定义的回调插件来定制Ansible的输出格式。这可能涉及到更多的编程工作,但可以实现更精确的输出格式。
总之,根据你的实际需求选择适合的方法来将Ansible playbook的输出显示在单行中。
正文完