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

Re: [OT] Sustituir texto en un fichero con SED.



El 2 de enero de 2019 20:03:31 CET, Matias Mucciolo <mmucciolo@suteba.org.ar> escribió:
>
>On Wednesday, January 2, 2019 7:53:42 PM -03 Ramses wrote:
>> El 2 de enero de 2019 19:44:38 CET, Matias Mucciolo 
><mmucciolo@suteba.org.ar> 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

No, no, Matías, los números están pegados a la P, no hay espacios.


Saludos,

Ramsés


Reply to: