On Wednesday, January 2, 2019 7:53:42 PM -03 Ramses wrote: > El 2 de enero de 2019 19:44:38 CET, Matias Mucciolo <[email protected]> escribió: > >> On Wednesday, January 2, 2019 6:39:15 PM -03 Ramses wrote: > >> > Hola a tod@s y feliz año... > >> > > >> > Tengo un fichero de texto con líneas, entre otras tantas, que > > > >comienzan > > > >> > con: > >> > > >> > # P1 = > >> > # P12 = > >> > # P123 = > >> > # P1234 = > >> > > >> > Donde cada dígito es variable entre 0 y 9, es decir, lo mismo te > >> > encuentras > >> > un '# P8' que un '# P5487', pero también te encuentras con líneas > > > >que > > > >> > empiezan por '# P pepito'. > >> > > >> > Me gustaría saber si hay forma de cambiar con SED todas las líneas > > > >que > > > >> > comienzan por: > >> > > >> > # P1 = > >> > # P12 = > >> > # P123 = > >> > # P1234 = > >> > > >> > Y dejarlas comenzando así: > >> > > >> > P1 = > >> > P12 = > >> > P123 = > >> > P1234 = > >> > > >> > Claro, manteniendo el resto de líneas del fichero tal cual están, > > > >por > > > >> > ejemplo, las que comienzan por y el resto. > >> > > >> > > >> > Saludos y gracias, > >> > > >> > Ramsés > >> > >> Buenas Ramses > >> > >> si esta todo bien como dijiste y tenes exactamente esas lineas > >> con el siguiente sed podes "descomentar" las lineas > >> que empiezas con "# PN" siendo N un numero del 0-9 > >> > >> sed: > >> > >> sed '/P[0-9]/s/# //g' > >> > >> ejemplo la linea '# P pepito' no se modifica... > >> probalo y cualquier duda pregunta. > >> o pone las lineas exactamente como son y cual falla.. > >> > >> saludos. > >> Matias.- > > > >acomodo el sed se me paso la parte de "empieza por bla" > > > >sed '/^# P[0-9]/s/# //g' > > > >ahora si ... > >saludos > >Matias. > > Ha, bien, te estaba contestando a tu correo para comentarte que si no > faltaba el ^. > > Ahora, está línea (sed '/^# P[0-9]/s/# //g') sustituiría las líneas que > comienzan, por ejemplo, por '# P8', pero como he comentado, ¿y para las > líneas que comienzan por '# P65', '# P756' o '# P 6548'? > > Es decir, las líneas pueden comenzar desde '# PN =' hasta '# PNNNN ='. > > > Saludos y gracias, > > Ramsés
Mientras no tengan espacio, es decir, '# P N' (que veo en tu pregunta '# P 6548' ) serviria desde '# PN' hasta '# PNNNNNNNNNN(...)' infinito. ahora si hay espacio...lo mas facil es correr este comando y una segunda pasada con este otro: sed '/^# P [0-9]/s/# //g' y con esas dos pasadas se solucionaria. ejemplo: $ cat aa # P1 = # P12 = # P123 = # P1234 = # P31234 = # P pepito = # P 6548 = $ $ cat aa | sed '/^# P[0-9]/s/# //g' | sed '/^# P [0-9]/s/# //g' P1 = P12 = P123 = P1234 = P31234 = # P pepito = P 6548 = Saludos. Matias

