Leer Un Texto Anterior A Una Palabra


Objetivo: Leer Un Texto Anterior A Una Palabra
Hola, soy nuevo en el foro, y realmente nuevo programando en gambas, quiero hacer un programa que requiere conocer el nombre de las interfaces de red en mi sistema Xubuntu, no sé si me estoy complicando la vida, pero mi idea era la siguiente:

usar el comando ifconfig para obtener la información de la tarjeta de red:

Shell ("ifconfig > /home/configuracion")

Y ahora tengo un archivo que se llama "configuracion" dentro de mi carpeta home

Ahora lo que quiero es abrir ese archivo y leer línea por línea sólo lo que se encuentra antes de la frase: "Link encap:"
y almacenarlo en una variable, creo que aquí necesitaré usar un arreglo (Que tampoco sé muy bien cómo se usan en gambas)

La idea es que siempre lo que está antes de esa frase será una interfaz de red, sé que si logro leer lo que está justo antes de esa frase voy a obtener una cadena con espacios, pero después se pueden eliminar.

Como he dicho anteriormente, no sé si me estoy complicando la vida, quizás hay una forma mejor para obtener estos datos en gambas o usando la consola, estoy atento a cualquier mensaje

Gracias

Perfil MP  
Objetivo: Re: Leer Un Texto Anterior A Una Palabra
Bienvenido.
Lo que buscas es sencillo, sólo debes primero encontrar la posición de la cadena que buscas (función instr) luego extraer todo desde el inicio hasta esa posición (función mid o left) y luego dividirlo en líneas que almacenas a un array (función split)
Desglosando (aunque se puede hacer en muchas menos líneas) sería algo así

dim s as string
dim ar as string[] 'este es el array
dim n as integer
s=file.load("~/configuracion") 'cargas el fichero en una variable
n=instr(s,"Link encap:") 'obtienes la posicion
s=left(s,n) 'extraes todo lo que va antes de esa cadena
ar=split(s,gb.newline) 'almacenas en un array esas líneas


Con eso ya tienes el array con el contenido del fichero hasta Link encap una línea en cada elemento.

Saludos.

última edición por shordi el Miercoles, 21 Junio 2017, 07:49; editado 1 vez
Perfil MP  
Objetivo: Re: Leer Un Texto Anterior A Una Palabra
En una sola línea sería

ar = Split(Left(file.load("~/configuracion"), InStr(file.load("~/configuracion"), "Link encap:")))


Más o menos... aunque sería más lento por recurrir dos veces al fichero en lugar de una, claro

Perfil MP  
Objetivo: Re: Leer Un Texto Anterior A Una Palabra
Sin utilizar el comando Shell.


Ya que te interesa conocer solo el nombre de las interfaces de red, tú podrías recobrar sus nombres desde sus file-device en la carpeta "/proc/net/dev_snmp6".

Ejemplo:
Public Sub Main()

Dim archivos As String[]
Dim s As String

archivos = Dir("/proc/net/dev_snmp6", Null, gb.Device)

For Each s In archivos
Print s
Next

End




Una otra posibilidad podría ser recobrando sus nombres desde el archivo "/proc/net/dev".

Ejemplo:
Public Sub Main()

Dim ss As String[]
Dim s As String
Dim b As Byte

s = File.Load("/proc/net/dev")

ss = Split(s, gb.NewLine)

For b = 2 To ss.Max
If IsNull(ss[b]) = False Then Print LTrim(Scan(ss[b], "*:*")[0])
Next

End

última edición por vuott el Miercoles, 21 Junio 2017, 19:42; editado 3 veces
Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1313s (PHP: -32% SQL: 132%)
Consultas SQL: 30 - Debug off - GZIP Activado