Foros del Web » Administración de Sistemas » Unix / Linux »

Seleccionar y editar una parte de un archivo de texto:

Estas en el tema de Seleccionar y editar una parte de un archivo de texto: en el foro de Unix / Linux en Foros del Web. Hola a todos los foristas: Quisiera saber cuál es la mejor manera para editar un archivo de texto, sin tenerlo que hacer de manera secuencial... ...
  #1 (permalink)  
Antiguo 30/09/2015, 11:49
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Seleccionar y editar una parte de un archivo de texto:

Hola a todos los foristas:

Quisiera saber cuál es la mejor manera para editar un archivo de texto, sin tenerlo que hacer de manera secuencial... me explico, tenemos un archivo de configuración de Apache para un repositorio de Subversion así:

Código:
<Location /repositorio01>
  DAV svn
  SVNPath /svn/repositorios/repositorio01
  AuthType Basic
  Require valid-user
  Deny from all
  Allow from 192.168.2.1
  Allow from 192.168.2.4
<\Location>
<Location /repositorio02>
  DAV svn
  SVNPath /svn/repositorios/repositorio02
  AuthType Basic
  Require valid-user
  Deny from all
  Allow from 192.168.2.3
  Allow from 192.168.2.4
<\Location>
Básicamente significa que tenemos dos repositorios, al repositorio 01 pueden acceder desde las ip's con terminación (1 y 4) y al repositorio 02 al que se puede acceder desde las ips's con terminación 3 y 5. Ahora bien, si quisieramos agregar una nueva IP para que acceda al repositorio 02, lo que tengo que hacer es buscar la sección que corresponde a este repositorio y verificar qué IP's están habilitadas, si no existe la ip, entonces se agregaría al final...


Este proceso queremos automatizarlo desde un shell, en donde se envíen como parámetros el nombre del repositorio y la ip a agregar. así, si por ejemplo queremos agregar la ip 192.168.2.10 al repositorio 2 tendríamos que hacer lo siguiente:

Lo primero que se nos ocurre es hacer una búsqueda secuencial, es decir, leer línea por línea hasta encontrar una etiqueta la etiqueta de inicio del repositorio.

Código:
<Location /repositorio02>
.

una vez que encontremos esta línea, continuar leyendo hasta encontrar la ip que queremos agregar (esto indicaría que ya está dada de alta)

Código:
Allow from 192.168.2.10
O encontrar la línea de cierre del repositorios

Código:
<\Location>
Si no se encontró la IP en el segmento, entonces se agrega al final, justo antes del cierre de la etiqueta.

El archivo entonces debería quedar de la siguiente manera:

Código:
<Location /repositorio01>
  DAV svn
  SVNPath /svn/repositorios/repositorio01
  AuthType Basic
  Require valid-user
  Deny from all
  Allow from 192.168.2.1
  Allow from 192.168.2.4
<\Location>
<Location /repositorio02>
  DAV svn
  SVNPath /svn/repositorios/repositorio02
  AuthType Basic
  Require valid-user
  Deny from all
  Allow from 192.168.2.3
  Allow from 192.168.2.4
  Allow from 192.168.2.10
<\Location>
Esto me parece muy poco eficiente, quisiera saber si con los comandos como sed, grep, tail o algún otro para el manejo de textos se puede simplificar el proceso...

De antemano gracias por las ideas que me puedan proporcionar.

Saludos
Leo.
  #2 (permalink)  
Antiguo 05/10/2015, 08:39
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Seleccionar y editar una parte de un archivo de texto:

Hazlo a alto nivel: investiga "augeas"

Etiquetas: parte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:03.