Muchas veces el uso de expresiones regulares confunde no tanto por su sintaxis, si no como esta se usa embebida en otros programas, uno de estos ejemplos es el comando SED, que posee un "flag"/opción especialmente diseñada para eso. Por ejemplo, podía usar una operación binaria OR para coincidir cualquier conjunto de caracteres y reemplazarlos por uno único.
$ cat foobar
http://colombia.com
http://gmail.com/
http://www.glud.co
Ejemplo 1: Reemplazar los dominios .com y .co por .gov
$ sed -E 's#(.com|.co)#.gov#g' foobar
http:/.govlombia.gov
http://gmail.gov/
http://www.glud.gov
Ejemplo 2: Reemplazar solamente los dominios que terminan por ".com" o ".com/" por ".gov"
$ sed -E 's#(.com|.com/)$#\.gov#g' foobar
http://colombia.gov
http://gmail.gov
http://www.glud.co
Ejemplo 3: Reemplazar solamente los dominios que terminan por ".com" o ".com/" por ".gov" y ".gov/" respectivamente.
Este incluye que primero evalúa la condición de terminar con ".com" o ".com/" y luego hace un simple reemplazo global de ".com" por ".gov".
$ sed -E '/(.com|.com\/)$/s/.com/.gov/g' foobar
http://colombia.com
http://gmail.com/
http://www.glud.co
Ejemplo 4: Lo mismo de arriba pero con muchas expresiones seguidas.
$ sed -E '/(.com|.com\/)$/s/.com/.gov/g;/(.gov|.gov\/)$/s/http/https/g' foobar
https://colombia.gov
https://gmail.gov/
http://www.glud.co
Ten en cuenta que para la segunda validación no se puede usar "/(.com|.com\/)$/s/http/https/g", porque en ese punto ".com" ya fue reemplazado por ".gov".
O
$ sed -E -e '/(.com|.com\/)$/s/.com/.gov/g' -e '/(.gov|.gov\/)$/s/http/https/g' foobar
https://colombia.gov
https://gmail.gov/
http://www.glud.co
O
$ sed -Ee '/(.com|.com\/)$/s/.com/.gov/g' -Ee '/(.gov|.gov\/)$/s/http/https/g'
https://colombia.gov
https://gmail.gov/
http://www.glud.co
Referencias:
-
https://linuxconfig.org/how-to-substitute-only-a-first-match-occurrence-using-sed-command
-
https://www.linuxtopia.org/online_books/linux_tool_guides/the_sed_faq/sedfaq4_004.html
-
https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
-
https://unix.stackexchange.com/questions/155805/sed-replace-first-k-instances-of-a-word-in-the-file
-
https://www.tutorialspoint.com/unix/unix-regular-expressions.htm