[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: modificar un archivo en bash



On Mon, 2003-03-24 at 13:41, Fernando Blat Peris wrote:
> A alguien se le ocurre algo más elegante que mi chapucilla??

Probablemente no he entendido lo que Rafael quiere, pero me suena
demasiado simple...  En fin.  Mi solución no es más elegante, pero sí
más compacta (y quizá más entendible y fácil de mantener):

Asumiendo que el archivo contiene una línea que reza literalmente
"Nombre: <var1> cuya dirección ip es <var2>":

-----------------------------------------------------------------------
#!/bin/bash
if [ -z "$1" -o -z "$2" ]; then
  echo "Uso: $0 nombre ip" >&2
  exit 1
fi

sed -e "s|^Nombre: <var1> cuya dirección ip es <var2>|\
Nombre: $1 cuya dirección ip es $2|"

exit 0
-----------------------------------------------------------------------

Y lo usarías como un filtro:

  cat archivo.in | script NOMBRE 123.123.123.123 > archivo.out

O, si te interesa reemplazar el archivo, algo como

  script NOMBRE 123.123.123.123 < archivo > archivo.$$ && \
    mv archivo.$$ archivo

Decía que "demasiado fácil" porque ésto es realmente un "one liner": no
es necesario hacer el script, basta con teclear la invocación a sed.

Pero bueno, seguramente no he entendido...

 -CR




Reply to: