On Sun, Nov 12, 2006 at 01:17:11AM -0600, César Rincón wrote: > [EMAIL PROTECTED] 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".
De maravillas. Lo que no me queda claro es el último -e... Por otro lado, como hago para que modifique el archivo directamente, y así evitar redirecciones ">" y "mv"..? En otros casos usaba -i, pero no parece funcionar.. > > 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. Quizás la mejor manera es viendo ejemplos con dificultad progresiva.. > Saludos. Gracias. Saludos. Andrés M. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

