Here is a solution using sed:
$ sed -n 'H;${x;s/^
//;s/nameserver .*$/nameserver 127.0.0.1
&/;p;}' resolv.conf
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
How it works: first, suppress the output of sed with the -n
flag. Then, for each line, we append the line to the hold space, separating them with newlines:
H
When we come to the end of the file (addressed by $
) we move the content of the hold space to the pattern space:
x
If the first line in pattern space is blank we replace it with nothing.
s/^
//
Then we replace the first line starting with nameserver
by a line containing nameserver 127.0.0.1
, a new line (Your version of sed
may not support
, in which case replace the n
with a literal newline) and the original line (represented by &
):
s/nameserver .*$/nameserver 127.0.0.1
&/
Now we just need to print the results:
p
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…