sed 动态替代,unix 呀?

sed 动态替代,unix 呀?

得到一堆带有域名限定名称的文件,希望用它们的 IP 替换它们。

我可以用一行 shell (bash) 来做到这一点吗?

典型的输入文件(nagiosconf):

define host {
        host_name                       host1
        use                             model
        alias                           myalias
        address                         myhost.domain

}
define service {
        host_name                       hostname
        use                             Modele_Ping
}

这个想法是用它的IP(由nslookup或其他工具返回)替换“myhost.domain”。

我总是可以编写脚本,但我想知道是否有一种 Unix 智能方法来做到这一点。

答案1

这可能需要一些调整,但是:

<source_file while read -r line; do
    part=$(echo "$line" | egrep -o '\w+\.\w+')
    if [[ $? == 0 ]]; then
        addr=$(dig $part +short | head -n1)
        echo "${line/$part/$addr}"
    else
        echo "$line"
    fi
done

这将查找“part1.part2”形式的任何域。搞乱正则表达式来改变它试图查找的内容。它每行只会查找一个地址。

相关内容