con Ruby y sin metaprograming, bien simplificado:
# abrimos un fichero en modo append fichero=File.open('nuevofichero.ext','a') # declaramos el nombre de usuario que buscaremos username = 'coco' # el nuevo valor que tendra Calling-Station-Id valornuevo= 'abcwxyz' # iteramos por las lineas del fichero original for linea in IO.read('/directorio/fichero.ext') # si la linea incluye la cadena de texto username y ademas "coco" if linea.include? 'User-Name' and linea.include? username # marcamos que este listo @semaforo=true # y copiamos la linea fichero.write linea # luego si llegamos a la linea Calling-Station-Id # y la variable indica que se encontró el usuario elsif @semaforo and linea.include? 'Calling-Station-Id' # escribimos la linea en el fichero de manera modificada # concatenamos el valor de la clave con la variable y las comillas fichero.write 'Calling-Station-Id = "' + valornuevo +'"' # luego si la linea ni pinta ni da color, la ponemos tal se plantea else fichero.write linea end end Thread name: "[Gutl-l] sed y ejemplo de reemplazo condicional" Mail number: 1 Date: Tue, Jun 17, 2014 In reply to: Javier Santiesteban > > este seria un ejemplo real de lo que necesito, pues quisiera hacer un script, > ya sea con sed, awk o cualquier otro que me permita encontrar en un fichero la > cadena User-Name = coco y entonces cambiar automaticamente la linea > Calling-Station-Id = xxxxxxxx y asi sucesivamente > > > NAS-IP-Address = 192.100.0.50 > NAS-Identifier = "leon" > Service-Type = Framed-User > Framed-Protocol = PPP > Framed-IP-Address = 172.40.2.110 > User-Name = "coco" > NAS-Port = 344 > NAS-Port-Type = Async > Called-Station-Id = "60110" > Calling-Station-Id = "abcwxyz" > Connect-Info = "48000/28800 V90/V42bis/LAPM" > Acct-Status-Type = Start > Acct-Session-Id = "0120051934" > Acct-Authentic = RADIUS > Acct-Delay-Time = 0 > Proxy-State = 0x313036 > Acct-Unique-Session-Id = "e2d926595daa0043" > Timestamp = 1402891264 > Request-Authenticator = Verified > > -- > > Javier Santiesteban Mitjans > Administrador de Redes > Grupo Empresarial Geominero-Salinero (MINEM) > calle #13 %1ra y 3ra, Reparto Chibas, Guanabacoa > email: javi...@gms.minem.cu > telefono: 7976023/6024 ext 112 > > > -- > Este mensaje ha sido analizado por MailScanner > en busca de virus y otros contenidos peligrosos, > y se considera que está limpio. > > ------------ próxima parte ------------ > Se ha borrado un adjunto en formato HTML... > URL: > <http://listas.jovenclub.cu/pipermail/gutl-l/attachments/20140616/f6bc965e/attachment.html> > ______________________________________________________________________ > Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba. > Gutl-l@jovenclub.cu > https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l > > < -- Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que est� limpio.
______________________________________________________________________ Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba. Gutl-l@jovenclub.cu https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l