首页 > 解决方案 > 只知道一小部分字符串的正则表达式替换

问题描述

我有一个包含 contains 的字符串。\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 地址不会是静态的,可以是任何值

标签: regexbashshell

解决方案


请您尝试以下操作。

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也附加到上面的代码中。


推荐阅读