Shell 06-12-2022, 01:18
Buenas!

A que suenan muy parecidos, casi como los sobrinos del pato Donald.

¿Qué diferencia existe entre los comandos grep, egrep y fgrep?

Saludos
Shell 05-12-2022, 15:59
Buenas!.

Hace un tiempo creé un ejemplo y no había forma de recordar su nombre. ( Rebuscado que soy a veces ).
Imaginar le puse "distancias" como nombre Big Grin , como para saber que es eso con ese nombre. Tongue

Como era un proyecto gráfico la solución más simple era encontrar la palabra "Paint" dentro de muchos archivos y proyectos de Gambas.
Como no sé si es posible hacerlo con Gambas directamente, me apoyé en el comando grep de bash.

Cuando uso la instrucción grep, este me devuelve el nombre de la ruta, ":" y donde se encuentra, ejemplo:
 
Cita: /home/miusuario/Programacion/PracticasGambas/PracticaTemporal/EjemploMultipleTemporal/.src/Cuadrado.class:    Paint.LineWidth = 2

Con eso sabemos que el separador es ":"

¿ Qué nos podemos encontrar ?. Que la palabra Paint se repita muchas veces "por ejemplo" en el archivo Cuadrado.class
Entonces voy descalificando nombres de archivos repetidos para que solo me lo muestre una vez.

Esa es la función principal. No he usado reloj para que el usuario se enfade. (Cuando el proceso tarda y no sabemos que se ha colgado la aplicación). Es que no se lo añadí. Rolleyes

Código:
Public Sub EncontrarCadenaRecursivamenteEnArchivosDeUnDirectorio(ruta As String, palabra As String, Optional separador As String = ":") As String[]
 
  Dim archivo As String
  Dim partesdeunaruta As String[]
  Dim slista As String
  Dim arepes As New String[]
  Dim asinrepes As New String[]
  Dim pos As Integer
 
  Shell "grep" & " -ir " & palabra & " " & ruta To slista
 
  For Each archivo In Split(slista, "\n")
    pos = InStr(archivo, separador)
    If pos > 0 Then arepes.Add(Left(archivo, pos - 1))
  Next
 
  For Each archivo In arepes
    partesdeunaruta = Split(archivo, "/", "'", True)    
    If Not asinrepes.Exist(partesdeunaruta[partesdeunaruta.Max - 2]) Then asinrepes.Add(partesdeunaruta[partesdeunaruta.Max - 2])    
  Next
 
  Return asinrepes.Sort()
 
End

Me he centrado en buscar solo archivos que contengan "Paint".

Y esto es el código del botón que llama a esa función.
Como son cosas de probar rápido he usado un Textarea. Smile

El nombre del proyecto por defecto lo encuentro, dos pasos más atrás de la ruta completa comenzando por la derecha.
El array partesdeunaruta contiene cada elemento una parte de la ruta como dice su nombre. Con este averiguo el nombre del proyecto.
Todo muy simple.

Código:
Public Sub btnBuscar_Click()
 
  Dim lista As New String[]
  Dim nombre As String
  Dim ruta As String = "ruta_a_tus_proyectos_Gambas"
 
  TextArea1.text = ""
 
  lista = EncontrarCadenaRecursivamenteEnArchivosDeUnDirectorio(ruta, "Paint")
 
  For Each nombre In lista
    TextArea1.Text &= nombre & gb.NewLine  
  Next
 
End

Moraleja: Pon un buen nombre a tus proyectos y usa las dos cajas de texto.

Soy requerido en la cocina...

Saludos
Archivos adjuntos
.gz
BuscarCoincidencias2-0.0.1.tar.gz (Tamaño: 12.11 KB Descargas: 2)
Shordi 04-12-2022, 19:47
Los antecedentes de este hilo los tenéis aquí, el caso es que ahora uso Ubuntu Mate sobre un usb3 para la Raspberry Pi 4. Va genial. Nunca he usado Mate en serio... pero esta versión la 22.04 como que me ha entrado por el ojito derecho y me está molando un montón. Todo puesto y configurado (lástima del Gambas, que es la 3.16.3). Un icono en el escritorio abre la conexión VNC y tejemanejeo el escritorio de la Pi sin problemas y un Shell Script me permite entrar vía SSH. Ok. Perfecto.

Excepto, ¡cómo no!, en una cosita:
Si inicio la Pi sin tenerla conectada a una pantalla, VNC me da un escritorio por defecto, 1024 x no sé qué, y el GTK de la Pi genera una serie de mensajes recursivos que no sé qué efecto pueden tener en ella, pero que hacen que la conexión VNC vaya más lenta.

Si inicio la Pi con una pantalla conectada, Mate establece una arquitectura de escritorio de 1920 x 1080 sin problemas y VNC va fetén.

La interfaz gráfica de Mate no permite cambiar dicha resolución usando VNC y se hace necesario iniciar el ubuntu mate de la Pi con una pantalla conectada para que luego todo vaya bien.

Así pues la pregunta es ¿Alguien sabe cómo dejar Mate configurado a 1920 x 1080 por defecto aunque no exista un monitor para ser detectado en el arranque?

Sería una gran ayuda.

Saludos
Páginas (571):    1 247 248 249 250 251 571   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 309
Último miembro: toniroman
Temas del foro: 1,761
Mensajes del foro: 9,153
Últimos temas
Problema con el repósito ...
Foro: Instalación
Último mensaje por: guizans, 14-04-2026, 21:38
Respuestas: 2 - Vistas: 277
UEFI y BIOS
Foro: Hardware & IoT
Último mensaje por: guizans, 13-04-2026, 21:22
Respuestas: 3 - Vistas: 2,435
Visual Studio Code con Ga...
Foro: General
Último mensaje por: guizans, 07-03-2026, 14:24
Respuestas: 2 - Vistas: 648
WebForm con mysql gridvie...
Foro: WebApp/WebForms
Último mensaje por: vjarvelo, 03-03-2026, 16:32
Respuestas: 2 - Vistas: 3,323
Sobre la proteccion del c...
Foro: General
Último mensaje por: Shordi, 19-02-2026, 11:07
Respuestas: 7 - Vistas: 1,209
Powered By MyBB, © 2002-2026 MyBB Group.
Made with by Curves UI.