<p>您可以使用一个简单的Python脚本:</p>
<pre><code>#!/usr/bin/python
import sys
groups = {}
group = None
for line in sys.stdin:
line = line.rstrip()
if line.startswith('['): # look for inventory groups
group = line[1:-1].lower() # extract the group name
groups[group] = []
if group and line: # gather up non-blank lines
groups[group].append(line)
for group in sorted(groups): # sort groups by name
print('\n'.join(groups[group])) # print out the group
print()
</code></pre>
<p>假设我们在文件<code>hosts</code>中有您的示例清单,而上面的脚本在<code>sortinv.py</code>中,那么下面的命令:</p>
^{pr2}$
<p>产生:</p>
<pre><code>[database]
db_server_1
local_db_server
[ExampleGroup]
Server05
Myserver01
[webservers]
examplehostserver
hostname3
</code></pre>
<p>这种机制的优点是它将保留诸如主机变量和组变量之类的内容。例如,给定此输入:</p>
<pre><code>[webservers]
examplehostserver ansible_host=10.0.0.1
hostname3
[database]
db_server_1
local_db_server
[ExampleGroup]
Server05
Myserver01
[webservers:vars]
apache_package_name=httpd
</code></pre>
<p>我们得到:</p>
<pre><code>[database]
db_server_1
local_db_server
[ExampleGroup]
Server05
Myserver01
[webservers]
examplehostserver ansible_host=10.0.0.1
hostname3
[webservers:vars]
apache_package_name=httpd
</code></pre>
<p>弗拉基米尔的解决方案将丢失许多额外的数据。在</p>