How to find and replace ALL IP addresses with a new one

There are several ways to find and replace all IP addresses with a new one in a Linux system. One way is to use the sed command, which is a powerful text processing tool.

  1. First, you will need to find all of the IP addresses in the files you want to modify. You can use the grep command to search for IP addresses in a specific directory and its subdirectories:
grep -r -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" /path/to/directory

This command will search for all IP addresses in the specified directory and its subdirectories and print the results to the terminal.

  1. Once you have identified the files and the IP addresses, you can use the sed command to replace all instances of the old IP address with the new one. The basic syntax for the sed command is:
sed -i 's/old-ip-address/new-ip-address/g' /path/to/file

For example, to replace all instances of the IP address “192.168.1.1” with “192.168.2.2” in the file “/etc/network/interfaces”, you would use the following command:

sed -i 's/192.168.1.1/192.168.2.2/g' /etc/network/interfaces
  1. If you want to replace IP addresses in multiple files, you can use the find command to find all files with a specific extension and then use sed command to replace IP addresses in those files:
find /path/to/directory -type f -name "*.extension" -exec sed -i 's/old-ip-address/new-ip-address/g' {} \;

This command will find all files with the “.extension” extension in the specified directory and its subdirectories, and then use sed to replace all instances of the old IP address with the new one in those files.

It’s important to keep a backup of the original files before making any changes and test the changes in a test environment.

It’s also important to note that this command will only work for IP addresses in the format “xxx.xxx.xxx.xxx” and will not work for IP addresses in different formats like IPv6.

Leave a Comment