如何使用列表生成配置文件

时间:2016-01-11 20:34:06

标签: linux bash awk sed

我有一个文件(让我们称之为input.txt),其中包含

hostname.domain.com  111.222.333.444 
hostname2.domain.com 555.666.777.888
...

并且大约有900行。

然后我有一个配置文件的节,它是

<Host "hostname.domain.com">
    Address "111.222.333.444"
    Version 1
    Community "more_communities"
    Collect "powerplus"
    Interval 300
</Host>

如何解析input.txt文件,使其主机名和IP进入正确的字段,并将其余部分放入文本文件中?

2 个答案:

答案 0 :(得分:2)

如果你完全描述了这种情况,那么你不需要比简单的shell脚本更复杂的东西:

#!/bin/sh
while read -r host ip _; do
    printf '<Host "%s">\n' "$host"
    printf '    Address "%s"\n' "$ip"
    echo   '    Version 1'
    echo   '    Community "more_communities"'
    echo   '    Collect "powerplus"'
    echo   '    Interval 300'
    echo   '</Host>'
done < input.txt > output.txt

请注意,我假设这是一个Apache httpd配置文件,而不是XML。

答案 1 :(得分:2)

使用here document

#!/bin/bash

while read -r host number; do
cat << EOF >> output.txt
<Host "$host">
  Address "$number"
  Version 1
  Community "more_communities"
  Collect "powerplus"
  Interval 300
</Host>
EOF
done < input.txt