El 2 de enero de 2019 20:14:50 CET, Ramses <[email protected]> escribió: >El 2 de enero de 2019 20:03:31 CET, Matias Mucciolo ><[email protected]> 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 >><[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 > >No, no, Matías, los números están pegados a la P, no hay espacios. > > >Saludos, > >Ramsés
Bien, Matías, muchas gracias, creo que este tema solucionado... Con comando: sed '/^# P[0-9]/s/# //g' fichero-A.txt > fichero-A-LIMPIO.txt Genero el mismo "fichero-A.txt" con todas las líneas que comenzaban con "# PNNNN" cambiadas por "PNNNN". Ahora tengo que hacer otra cosa que no sé si se podrá hacer con SED o habrá que usar otro comando. Por ejemplo, tengo el "fichero-A-LIMPIO.txt" que contiene: fichero-A-LIMPIO.txt -------------------------------- P2315 = 7 P6 = manolo P35 = www.jose.com Y tengo un "fichero-B.txt" que contiene: fichero-B.txt -------------------------------- P2315=38 P6=paco P35=1.2.3.4 Ahora tendría que buscar, por ejemplo, cada una de las líneas PNNNN del "fichero-A-LIMPIO.txt", buscarlas en el "fichero-B.txt' y sustituir la línea del "fichero-A-LIMPIO.txt" por la que aparece en el "fichero-B.txt". Por ejemplo, buscar la línea 'P2315 = 7' del "fichero-A-LIMPIO.txt" en el "fichero-B.txt" y sustituirla en el "fichero-A-LIMPIO.txt" por la línea 'P2315=38' que aparece en el "fichero-B.txt". No sé si me explico... Claro, con: sed 's/^P2315 =.*/P2315=38/' fichero-A-LIMPIO.txt Pero claro, tendría que buscar la línea PNNNN en el "fichero-A-LIMPIO.txt", buscar la misma en el "fichero-B.txt" y reemplazar la línea en el "fichero-A-LIMPIO.txt' por la que aparece en el "fichero-B.txt". ¿O sería más fácil abrirlos en una hoja de cálculo y aplicarles unas funciones?. Saludos y gracias, Ramsés

