Regex 如何使用sed命令编辑具有IPv4地址的行
我需要通过在包含Ip地址的行中添加一些选项来修改ntp配置文件。 我已经用sed命令尝试了很长时间,但除非我不知道IP地址,否则无法修改该行。 比如说,我有几行, 服务器172.0.0.1 服务器10.0.0.1 我需要在ip地址后添加iburst选项。 我试过像Regex 如何使用sed命令编辑具有IPv4地址的行,regex,linux,sed,Regex,Linux,Sed,我需要通过在包含Ip地址的行中添加一些选项来修改ntp配置文件。 我已经用sed命令尝试了很长时间,但除非我不知道IP地址,否则无法修改该行。 比如说,我有几行, 服务器172.0.0.1 服务器10.0.0.1 我需要在ip地址后添加iburst选项。 我试过像sed-e的/(\d{1,3}\.\d{1.3}\.\d{1,3}\.\d{1,3})/\1 iburst/g'ntp_文件 或者sed-e的/^server+\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}/server
sed-e的/(\d{1,3}\.\d{1.3}\.\d{1,3}\.\d{1,3})/\1 iburst/g'ntp_文件
或者sed-e的/^server+\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}/server\1\.\2\.\3\i第一个/g'
ntp\U文件
但这并不是在修改线路。任何类型的建议都会非常有用。由于sed不支持的
\d
速记类、范围量词内误用的点以及分组和范围量词分隔符的错误转义,您用作POSIX BRE的正则表达式无法匹配预期字符串
你可以用
sed -E -i 's/[0-9]{1,3}(\.[0-9]{1,3}){3}/ & iburst/g' ntp_file
POSIX ERE(通过-E
选项启用)表达式表示匹配
-一到三位数字[0-9]{1,3}
-一个点的三个匹配项和一到三个数字(\[0-9]{1,3}){3}
&i第一个
,其中和
代表整个匹配
g
标志替换所有出现的情况。但它没有修改行
,但它正在做其他事情或正在发生任何事情?您是否收到错误或任何消息?请注意,在基本正则表达式中,反向引用带有斜杠sed的/\(blabal\)/\1/'
-没有\code>()
匹配文字字符。sed
不“知道”\d
,使用[0-9]
。另外,您正在使用POSIX ERE语法,使用-E
选项(而不是-E
)。@KamilCuk,是的,它的给出错误为“sed:-E expression#1,char 62:invalid reference\1 on`s'命令的RHS”@WiktorStribiżew,但是当我直接指定地址时,它工作正常,它不使用正则表达式。也尝试使用[0-9]。sed-E-i的/[0-9]{1,3}(\[0-9]{1,3}){3}/&iburst/g'ntp_文件
?模式中还有{1.3}
,这是一种打字错误。