Bash script: Trabajando en sed con variables bash
En esta entrada voy a explicar una forma para poder trabajar con variables de entorno dentro de sed. Si ejecutamos el siguiente ejemplo:
$cat >> test << EOF this is a test Ctrl-D $ VAR=test $ sed s/$VAR/toast/ test this is a toast
Observamos que se reemplaza correctamente la palabra que se indica a través de la variable. Sin embargo, si la variable con la que intentamos trabajar tiene signos de puntuación:
$cat >> test << EOF # Revised XXX Ctrl-D $ VAR=`date +"%x %X"` $ echo $VAR 14/03/10 23:20:51 $ sed s/XXX/$VAR/ test sed: -e expresión #1, carácter 12: opción desconocida para `s'
No funcionará esta forma de hacer las cosas. Para no tener problemas de este tipo podemos usar la siguiente alternativa
$ sed "s|XXX|$VAR|" test # Revised 14/03/10 23:20:51
Más información en:
In this post I expain a way to use environment variables with sed. If we run this example:
$cat >> test << EOF this is a test Ctrl-D $ VAR=test $ sed s/$VAR/toast/ test this is a toast
You can observe that the word specified through the variable is replaced correctly. However, if the variable contains punctuation marks:
$cat >> test << EOF # Revised XXX Ctrl-D $ VAR=`date +"%x %X"` $ echo $VAR 14/03/10 23:20:51 $ sed s/XXX/$VAR/ test sed: -e expresión #1, carácter 12: opción desconocida para `s'
This approach to use sed is invalid. To solve this problem we can use the following approach:
$ sed "s|XXX|$VAR|" test # Revised 14/03/10 23:20:51
More information in:
loading...



Últimos comentarios