-
Notifications
You must be signed in to change notification settings - Fork 2
/
replace-url.sh
56 lines (43 loc) · 1.9 KB
/
replace-url.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
# @version 2016-01-26
if [ -z $1 ]; then # no hay parametros en la llamada, los pedimos por pantalla:
read -r -e -p "Old domain (do not write http or www) (e.g. domain.com): " oldDomain
read -r -e -p "New domain (do not write http or www) (e.g. domain.com): " newDomain
read -r -e -p "File to replace domains (will be saved as a copy): " file
read -r -p "Do you want to use https on new domain? [y/N] " useHttps
if [ $oldDomain == $newDomain ]; then
echo -e "\e[91mSorry, you cannot set same name for old and new domain.\e[0m"
exit 1
fi
elif [ $# -ne 4 ]; then # hay parametros, pero no hay 4
echo "Usage: $0 oldDomain newDomain file useHttps"
exit 65 #bad args
else
oldDomain=$1
newDomain=$2
file=$3
useHttps=$4
fi
useHttps=${useHttps,,} #tolower
if [[ $useHttps =~ ^(yes|y)$ ]]; then
http='https'
else
http='http'
fi
# por algun motivo no cambia bien a https, deja http aunque cambia el dominio
# From https:
sed "s/https%3A%2F%2F$oldDomain/$http:%3A%2F%2F$newDomain/g" $file > $file-replaced
sed -i "s/https:\\\\\/\\\\\/$oldDomain/$http:\\\\\/\\\\\/$newDomain/g" $file-replaced
sed -i "s/https:\/\/$oldDomain/$http:\/\/$newDomain/g" $file-replaced
# From http:
sed -i "s/http%3A%2F%2F$oldDomain/$http:%3A%2F%2F$newDomain/g" $file-replaced
sed -i "s/http:\\\\\/\\\\\/$oldDomain/$http:\\\\\/\\\\\/$newDomain/g" $file-replaced
sed -i "s/http:\/\/$oldDomain/$http:\/\/$newDomain/g" $file-replaced
# From generic //:
sed -i "s/%2F%2F$oldDomain/%2F%2F$newDomain/g" $file-replaced
sed -i "s/\\\\\/\\\\\/$oldDomain/\\\\\/\\\\\/$newDomain/g" $file-replaced
sed -i "s/\/\/$oldDomain/\/\/$newDomain/g" $file-replaced
sed -i "s/www.$oldDomain/www.$newDomain/g" $file-replaced
# OJO!! aquí se colaría un https://www... si haces replace de https a http
echo "The following matches have not been replaced:"
cat $file-replaced | grep -o -P ".{0,12}$oldDomain.{0,12}" | sort | uniq | grep $oldDomain --color=auto