sed 動的交換、UNIX?

sed 動的交換、UNIX?

ドメイン資格のある名前のファイルの束を取得し、それを対応するIPに変更したいと思いました。

1行のシェルでこれを実行できますか?

一般的な入力ファイル(nagiosconf):

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

}
define service {
        host_name                       hostname
        use                             Modele_Ping
}

アイデアは、「myhost.domain」を対応するIP(nslookupまたは他のツールから返される)に置き換えることです。

私はいつでもスクリプトを書くことができますが、これを行う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」形式のすべてのドメインが検索されます。検索する内容を変更するために正規表現を操作します。 1行に1つのアドレスのみを探します。

関連情報