递归地用当前ip替换IP

时间:2018-06-29 11:28:57

标签: regex linux sed ip

我每个文件夹中都有.env个文件

Folder1
  .env
Folder2
  .env
Folder3
  .env
Folder4
  .env

.env文件具有

IP_ADDRESS=192.168.1.132

我想用当前的本地IP更改.env的IP。

CurrentIP=`ifconfig | grep inet | awk '{ print $2 }' | grep -E '(192)\.(168)(\.[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]){2}'`

echo 'Assiged IP' $CurrentIP

find ./ -name '.env' -type f -exec sed -i '' -e "s/([0-9]{1,3}[.]){3}[0-9]{1,3})/$CurrentIP/" {} \;

它似乎不起作用,出了什么问题。

2 个答案:

答案 0 :(得分:0)

尝试如下使用-exec的{​​{1}}标志:

find

答案 1 :(得分:0)

您在sed中的正则表达式不正确。请尝试

find ./ -name '.env' -type f -exec sed -i '' -E "s/([0-9]{1,3}\.){3}[0-9]{1,3}/$CurrentIP/" {} \;
  1. 使用扩展的(现代)正则表达式-E
  2. 正则表达式[0-9]{1,3})中重复的右括号