我有一个DNS区域文件,其中仅一个 NSs记录应被更新:它们中的任何一个都应成为 dns2.hosting.com 。
domain.com. 1800000 IN SOA dns1.hosting.com. cpanel.one.domain2.com. (
2018101101 ;Serial Number
86400 ;refresh
7200 ;retry
3600000 ;expire
86400 )
domain.com. 1800000 IN NS dns1.hosting.com.
domain.com. 1800000 IN NS dns1.hosting.com.
我试图使用sed实现此目的,它仅更新两条记录。请帮忙。
sed -i '/NS/ s/dns1/dns2/' domain.com.db
预期结果:
domain.com. 1800000 IN SOA dns1.hosting.com. cpanel.one.domain2.com. (
2018101101 ;Serial Number
86400 ;refresh
7200 ;retry
3600000 ;expire
86400 )
domain.com. 1800000 IN NS dns1.hosting.com.
domain.com. 1800000 IN NS dns2.hosting.com.
答案 0 :(得分:1)
sed -i -e '0,/\<NS\>/s/\(\<NS.*\s\)dns1/\1dns2/' domain.com.db
范围0,/\<NS\>/
限制了搜索并替换为从文件开头到NS
的第一个匹配项(作为单独的单词)的行。替换仅在与\(\<NS.*\s\)dns1
匹配的行上完成。