只用一小部分字符串进行正则表达式替换

时间:2018-06-25 17:31:10

标签: regex bash shell

我有一个包含\r\nexports.host = "192.168.24.76"的字符串。此处的IP地址不是固定的,并且是可变的。

我想使用正则表达式查找此表达式并替换bash中的IP地址。

例如,使其为\r\nexports.host = "192.168.24.77",然后在下一次迭代中将其更改为\r\nexports.host = "192.168.24.78"。无论如何,我可以在bash脚本中使用正则表达式来做到这一点吗?

就目前而言,我的做法是:sed -i -e 's/"192.168.24.76"/"'$1'"/g' ./dist/config.*.js,但只是发现初始IP地址不会是静态的,可以是任何值

1 个答案:

答案 0 :(得分:1)

请您尝试以下。

awk -v new_ip="your_new_ip" '
match($0,/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){
  print substr($0,1,RSTART-1) new_ip substr($0,RSTART+RLENGTH);
  next
}
1' Input_file

如果您要将输出的值保存到Input_file本身中,则也将> temp_file && mv temp_file Input_file附加到上述代码中。