Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用sed命令编辑具有IPv4地址的行_Regex_Linux_Sed - Fatal编程技术网

Regex 如何使用sed命令编辑具有IPv4地址的行

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

我需要通过在包含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\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}
,这是一种打字错误。