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

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



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


Reply to: