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

Re: [OT] Nuevo desafío Sed



andmarti@gmail.com wrote:
> Será posible que sea tan jodido esto del sed? Me tiene de la cabeza.

Es así de jodido.  Es parte del encanto :)

> Lo que estaba tratando de hacer ahora es agregar una linea con el texto
> "NUEVO" bajo la primera que cumpla con las 2 siguientes condiciones: 
> que empiece con "COMIENZO" y que no contenga "STRING_PROHIBIDO".
> 
> En rigor de verdad, lo que necesito es que escriba al final de la línea que
> encontró. Seguro que con el comando s como dijo uno de los pibes el otro día,
> pero como ni siquiera pude hacer lo primero..

A ver si te entiendo.  Considera el siguiente script:

------------------------------------------------
#!/bin/sed -f

# Si la linea *no* comienza con COMIENZO,
# imprime y vuelve al inicio del programa;

/^COMIENZO/!b

# (else) si la linea contiene PROHIBIDO,
# imprime y vuelve al inicio del programa;

/PROHIBIDO/b

# (else) agrega " NUEVO" al final, imprime,
# e imprime el resto del texto sin mas
# comprobaciones.

s/$/ NUEVO/
:a
n
ba
------------------------------------------------

O sin tanto verbo:

 sed -e '/^COMIENZO/!b' -e '/PROHIBIDO/b' -e 's/$/ NUEVO/' \
  -e ':a;n;ba'

Si aún quieres el salto de línea, cambia " NUEVO" por "\nNUEVO".

> NOTA AL MARGEN: El man y la info de sed es medio chota.
> Saludos.

La info es una referencia completa y correcta, que parece escrita para
ser útil sólo a quien ya sabe sed en primera instancia.  O sea, estoy de
acuerdo contigo.  Pero no me puedo imaginar cómo sería una documentación
mejor.  Quizá es que sed es difícil de documentar.

Saludos.

-- 
César Rincón
Enlaces Tecnológicos
Guadalajara, México



Reply to: