Regex 优化sed字符串
在修改之前,我需要使用备份修改/etc/resolv.conf文件。此文件包含以下字符串:Regex 优化sed字符串,regex,linux,sed,dns,Regex,Linux,Sed,Dns,在修改之前,我需要使用备份修改/etc/resolv.conf文件。此文件包含以下字符串: nameserver 10.99.201.11 nameserver 10.77.201.11 nameserver 10.99.201.10 nameserver 10.77.201.12 期望结果 nameserver 10.99.201.11 nameserver 10.200.65.11 nameserver 10.99.201.10 nameserver 10.200.65.12 我想到的修
nameserver 10.99.201.11
nameserver 10.77.201.11
nameserver 10.99.201.10
nameserver 10.77.201.12
期望结果
nameserver 10.99.201.11
nameserver 10.200.65.11
nameserver 10.99.201.10
nameserver 10.200.65.12
我想到的修改条件:
if some string starts with "nameserver" word
AND
if that string ends on "11" or "12"
THEN
replace 10.77.201 to 10.200.65
这个sed命令非常有效
sed '-i.orig' -e '/^nameserver/s/10.77.201.11/10.200.65.11/; /^nameserver/s/10.77.201.12/10.200.65.12/' /etc/resolv.conf
但我需要将其优化为一个sed过程。这将使用regexp模式,但我对此无能为力。请尝试以下内容(使用GNU
sed测试)
添加-i.bak
以备份输入_文件并将输出保存到输入_文件本身
或
我自己刚找到解决办法
sed '-i.orig' -E '/^nameserver.*(11)|(12)$/s/10.77.201/10.200.65/' /etc/resolv.conf
更好的
sed '-i.orig' 's/\<10\>\.77\.201\.1\([12]\)/10.200.65.1\1/' /etc/resolv.conf
sed'-i.orig''s/\\.77\.201\.1\([12]\)/10.200.65.1\1/'/etc/resolv.conf
sed '-i.orig' -E '/^nameserver.*(11)|(12)$/s/10.77.201/10.200.65/' /etc/resolv.conf
sed '-i.orig' 's/\<10\>\.77\.201\.1\([12]\)/10.200.65.1\1/' /etc/resolv.conf