Reputation: 649
I am trying to replace a value taken from one file in another:
{ read -r val1
sed -i 's! nameserver .*; *$! nameserver '$val1';!;' testfile
} < /etc/resolv.conf
and then replace nameserver IP in the nginx config:
server {
location {
resolver 1.2.3.4 valid=60s;
resolver_timeout 10s;
}
However I am getting following error from sed:
sed: -e expression #1, char 2: unterminated
s' command`
Upvotes: 1
Views: 84
Reputation: 2030
Taking a shot in the dark as I don't know how your resolv.conf is configured:
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
edit: Now requires GNU Awk: gensub
to dynamically preserve leading whitespace, nextfile
to skip current file once we have a nameserver
Upvotes: 2