elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Buscar y reemplazar cadena de caracteres
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Buscar y reemplazar cadena de caracteres  (Leído 1,645 veces)
Vexiaxz

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Buscar y reemplazar cadena de caracteres
« en: 18 Noviembre 2021, 08:52 am »

Buenas tardes,

Tengo un texto y deseo buscar una línea en particular y cambiar una palabra (de false a true o viceversa).

El problema es que tengo caracteres especiales y todo lo que he probado me falla.
El archivo tiene unas 1500 líneas similares con valores false o true, pero ninguna es idéntica.

La línea que deseo reemplazar es la siguiente:

<item oor:path="/org.openoffice.Office.Common/VCL"><prop oor:name="ForceSkiaRaster" oor:op="fuse"><value>false</value></prop></item>

Esta palabra es única en todo el texto ForceSkiaRaster, se podría encontrar la línea con esta palabra y cambiar el false por true o viceversa solo en esa línea.

He probado ya muchos métodos pero nada me ha funcionado casi siempre me falla por los caracteres espaciales.

Incluso he probando utilizando el sed y grep, pero nada... no me funciona.


« Última modificación: 18 Noviembre 2021, 08:57 am por Vexiaxz » En línea

Danielㅤ


Conectado Conectado

Mensajes: 902


🔵🔵🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Buscar y reemplazar cadena de caracteres
« Respuesta #1 en: 18 Noviembre 2021, 14:28 pm »

Hola, esos no son caracteres especiales, esos son símbolos comunes.
Con respecto a lo que deseas hacer, no es difícil lograrlo, si ninguna línea del archivo es idéntica, además de que nos comentas que la palabra "ForceSkiaRaster" es única en todo el archivo, entonces podrías buscar a reemplazar este pedazo de texto:

<prop oor:name="ForceSkiaRaster" oor:op="fuse"><value>false</value></prop></item>

por éste:

<prop oor:name="ForceSkiaRaster" oor:op="fuse"><value>true</value></prop></item>

eso debería de funcionar.


Saludos


En línea

¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!
Vexiaxz

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Buscar y reemplazar cadena de caracteres
« Respuesta #2 en: 18 Noviembre 2021, 15:15 pm »

Claro, pero como lo puedo hacer en batch?
Lo he intentado y lo he logrado.
En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.810



Ver Perfil
Re: Buscar y reemplazar cadena de caracteres
« Respuesta #3 en: 19 Noviembre 2021, 15:50 pm »

Batch por si mismo solo manipula texto simple que está pensado ser nombres de archivos o carpetas, por eso caracteres como <> lo fastidian.

Tienes que apoyarte llamando a otros comandos más versátiles para esas cosas como PowerShell o Visual Basic Script, con PowerShell sería bastante sencillo gracias a sus expresiones regulares:

Código
  1. @Echo Off
  2. ChCp 1252
  3. PowerShell (Get-Content texto_false.txt) -Replace '(ForceSkiaRaster.*)false','$1true' > texto_true.txt

Seguramente en Bash también se puede hacer, pero de momento no lo tengo a mano para probar XD

Por otro lado estarían los problemas de codificación de caracteres, pero por defecto CMD se maneja en 850 así que no debería haber problemas con caracteres ingleses, pero si tu texto tiene caracteres latinos como eñes, tildes, diéresis, etc se debe poner al CMD con la codificación con la que se guardó el archivo o compatible, en mi ejemplo puse ChCp 1252 porque mi archivo texto_true.txt se guardó con codificación ANSI que es lo mismo que Windows-1252 así que se lo pongo en el CMD para que ambos hablen el mismo idioma.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines