我正在尝试替换从另一个文件获取的值:
{ read -r val1
sed -i 's! nameserver .*; *$! nameserver '$val1';!;' testfile
} < /etc/resolv.conf
,然后在nginx配置中替换名称服务器IP:
server {
location {
resolver 1.2.3.4 valid=60s;
resolver_timeout 10s;
}
但是我从sed中得到以下错误:
sed: -e expression #1, char 2: unterminated
的命令`
答案 0 :(得分:2)
在黑暗中拍摄照片,因为我不知道您的resolv.conf是如何配置的:
gawk '
NR==FNR && $1=="nameserver" {if(ns=$2) nextfile} #1
NR!=FNR && $1=="resolver" {print gensub(/[^ ]+/, ns, 2); next} #2
NR!=FNR #3
' /etc/resolv.conf testfile > tmp && mv tmp testfile #4
编辑:现在需要GNU Awk:gensub
动态保留前导空白,nextfile
在拥有名称服务器后跳过当前文件