Inicio > Programación, Scripting > Bash script: Trabajando en sed con variables bash

Bash script: Trabajando en sed con variables bash

Domingo, 14 de marzo de 2010 Dejar un comentario Ir a comentarios

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:

GD Star Rating
loading...
Bash script: Trabajando en sed con variables bash, 8.5 out of 10 based on 2 ratings
Share
Categories: Programación, Scripting Tags: , , ,
  1. Sin comentarios aún.
  1. Sin trackbacks aún.