sed 동적 교체, 유닉스?

sed 동적 교체, 유닉스?

도메인 자격을 갖춘 이름을 가진 파일 묶음을 얻었고 이를 해당 IP로 바꾸고 싶었습니다.

한 줄의 쉘(bash)로 이 작업을 수행할 수 있습니까?

일반적인 입력 파일(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" 형식의 모든 도메인이 검색됩니다. 찾으려는 내용을 변경하기 위해 정규식을 조작합니다. 한 줄에 하나의 주소만 찾습니다.

관련 정보