Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/12/2006, 14:42
Avatar de Sh4ka
Sh4ka
 
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 9 meses
Puntos: 0
Re: Borrar "n" linea de un fichero usando bash

Ahora logré borrar la linea especificada con sed de la siguiente forma:

sed '3d' archivo

y el resultado es el esperado:
Código:
AddModule mod_sulf.c
AddModule mod_smtp.c
AddModule mod_imap.c
AddModule mod_userdir.c
AddModule module_regex.so 
Ahora, este es un fichero corto de ejemplo, y se con seguridad que la linea número 3 posee la cadena que quiero borrar. Pero en realidad el archivo que debe procesar el script es el httpd.conf (archivo de configuración de Apache), que posee cientos de lineas, y dadas las diferentes configuraciones en diferentes servidores, esa primera coincidencia que quiero borrar, no se encuentra siempre en el mismo numero de linea.

Para saber el número exacto de la linea que corresponde a la variable que quiero borrar uso algo como el siguiente comando:
Código:
LINEA_A_BORRAR=`grep "AddModule module_regex.so" -m1 -n /etc/httpd/conf/httpd.conf | tr -d [a-zA-Z#_.:/]`
Ese comando me devuelve solo el valor numérico de la linea que quiero borrar, por lo que he intentado correr sed con esa variable, pero no la toma:

Código:
sed '$LINEA_A_BORRARd' archivo
También he probado usando comillas dobles:
Código:
sed "$LINEA_A_BORRARd" archivo
Pero muestra todo el contenido sin borrar la linea..


¿Alguna idea de como solucionar esto ?