Ce sujet est résolu.
12 | |||
Auteur | Messages | ||
---|---|---|---|
pierrotlo | #1 Posté le 14/11/2015 à 15:44:21 | ||
Bonjour tous. Voilà le problème : Après un Shell, j'ai ceci dans la variable return /dev/sda1 46296528 18106420 25815328 42% / ... etc. En fait plusieurs lignes. Je veux les parser en ne conservant que.. par exemple : /dev/sda1 et 42% et la partition / Et je suis emprunté. Une idée ? Bien à tous, en vous remerciant | |||
Reivillo | #2 Posté le 14/11/2015 à 15:57:30 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Bonjour pierrolo. Regarde les Fonctions sur les chaînes de caractères ICI Reivillo. Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
Reivillo | #3 Posté le 14/11/2015 à 17:14:30 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | En mettant dans un tableau, l'exemple ci-dessous devrait te donner une idée.
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
linuxos | #4 Posté le 14/11/2015 à 17:22:51 | ||
Un peu de sel, de poivre et la crevette sera... | Bonjour, Il y a justement un exemple concernant ton problème fourni avec le composant gb.pcre dans la documentation de Gambas3. C'est ici: Composant gb.pcre Je reconnais que l'utilisation des expressions régulières est un peu abrupte mais c'est vraiment super efficace. De plus pour tester mes expressions avant de les utiliser dans Gambas, je m'exerce sur ce site web: https://regex101.com Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||
Reivillo | #5 Posté le 14/11/2015 à 17:56:24 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | @ pierrotlo. J'ai modifié le Code à ton cas précis. @ linuxos... Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
pierrotlo | #6 Posté le 15/11/2015 à 11:27:40 | ||
Salut tous, Voilà ce que j'obtiens . Cela fonctionne parfaitement. La commande Shell donnée par Reivillo me renvoyait un résultat le tout mais sans ligne. Donc plus complexe à parser Voilà le code. Il y'a sans doute un moyen plus simple d'éviter le filtrage de la variable tempLine. Toute les suggestion sont bonnes Public Sub getHdd() Dim Result As String Dim commande As String Dim i As Integer Dim tempLine As String[] Dim endArray As New String[] Dim Tab As String[] 'Shell command commande = "df" Shell commande Wait To Result Print Result Tab = Split(Result, "\n") 'pour vérification Print Tab[1] 'array temporaire tempLine = Split(Tab[1], " ") For i = 0 To tempLine.count - 1 'filtrer dans l'array les chaîne vide. Tabulateur ??? If tempLine <> "" Then endArray.add(tempLine) End If Next Print endArray[0] Print endArray[1] Print endArray[2] Print endArray[3] Print endArray[4] Print endArray[5] End | |||
pierrotlo | #7 Posté le 15/11/2015 à 11:34:00 | ||
Pour mémoire, ce programme me permet d'utiliser des commandes bash rapidement comme l'utilisation de pdftk pour les PDF ou l'extraction audio d'une vidéo ou encore la commande 'find'. L'utilité de ce logiciel est aussi de faciliter la vie de mes clients (je n'installe et ne travaille que sous Linux exclusivement). Ils ne sont pas forcément adepte du terminal. MAis vu que c'est puissant, je ne vois pas vraiment comment les en priver | |||
Reivillo | #8 Posté le 15/11/2015 à 14:30:03 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » |
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
pierrotlo | #9 Posté le 15/11/2015 à 16:37:30 | ||
Ah Pas mal c'est plus concis. Je pense que je me suis laissé avoir par le terminal qui m'affichait le tout en un bloc losrque je l'avais lancé. Je ne saisi pas pourquoi la console me les donne en brut~$ set `df | sed '1d'`; echo $@ /dev/sda1 46296528 18105484 25816264 42% / none 4 0 4 0% /sys/fs/cgroup udev 8121692 4 8121688 1% /dev tmpfs 1627536 1920 1625616 1% /run none 5120 0 5120 0% /run/lock none 8137672 104944 8032728 2% /run/shm none 102400 24 102376 1% /run/user /dev/sda7 49663724 4381824 42736084 10% ... etc. MAis bon je regarde Merci pour tout. JE reviendrait vers vous | |||
Reivillo | #10 Posté le 15/11/2015 à 16:45:22 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Ou si tu veux traiter ligne par ligne:
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
Reivillo | #11 Posté le 15/11/2015 à 16:52:11 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | Si nécessaire je peux te commenter les lignes de codes. Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
pierrotlo | #12 Posté le 15/11/2015 à 21:13:40 | ||
Je te remercie. Mais si j'utilise très souvent les lignes bash, notament pour tout ce qui est réseau. sed me reste largement inconnu. LE code, je le comprend bien. Ce que je ne saisi pas c'est "set `df | sed '1d'`; echo $@" comparativement à df | sed '1d' qui si je fait lacommande, me donne exactement la mêmme chose que : df tout court | |||
Reivillo | #13 Posté le 16/11/2015 à 12:40:09 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | @ pierrotlo."df | sed '1d'"Ici, on passe le Flux df à sed qui lui, supprime la 1ère ligne avec sa commande '1d' "set `df | sed '1d'`; echo $@"Là! C'est une astuce, pour s'affranchir des espaces inutiles et consécutifs. J'utilise set variable argument. Quant a $@, elle liste les arguments initiés précédemment avec set. Personnellement, j'utilise surtout Gambas3 pour faire des affichage graphique à mes scripts bash. Mais là... Il y a peut-être des puristes dans la salle... comparativement àBen non. Si tu regardes bien: df retourne toutes les lignes de df, alors que df | sed '1d' retourne les lignes de df, amputée de la 1ère. Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
pierrotlo | #14 Posté le 16/11/2015 à 22:36:42 | ||
Vu et je te remercie du fond du coeur. Je vais noter cette commande. Je l'ai essayée aussi avec arp-scan : Exemple : sudo arp-scan --localnet Sauf si tu as plusieurs interface réseau on doit préciser : sudo arp-scan --interface=eth1 --localnet Shell "set `sudo arp-scan --interface=eth1 --localnet | sed '1d'`; echo $@" To $sShell $asTab = Split($sShell, " \n") Dans ce cas là ben cela ne fonctionne pas. Je n'ai plus que la résultat sur une seule ligne. A croire qu'il n'existe pas de "\n" si jamais je suis sous Linux Mint Rafaella et il faut faire un sudo apt-get install arp-scan Pour l'exemple, j'ai autorisé dans /etc/sudoers mon utilisateur à lancer la commande arp-scan sans password. | |||
Reivillo | #15 Posté le 17/11/2015 à 08:44:06 | ||
C' est ici, et nul part ailleurs. « Et pis c'est tout ! » | @ pierrotlo.Shell "set `sudo arp-scan --interface=eth1 --localnet | sed '1d'`; echo $@" To $sShell Là évidemment ! Il faut se rappeler que la commande set n'enregistre que des Mots entiers, et donc fait fi des Caractères Nuls et Espaces. Les caractères Nuls allant de 0 à 31 en décimal. Le "\n" étant le 10, il passe donc à la trappe. En plus dans ton cas, avec l'exemple arp-scan, il faut en plus Supprimer les parenthèses dans le flux de sortie. Je te remets le code modifié en conséquence, qui comme celui du message Posté le 15/11/2015 à 16:45 traite le flux ligne après ligne. Ici la multi-commande sed '1d; s/(//g; s/)//g'. Supprime la 1ère ligne 1d, puis les parenthèses ouvrantes s/(//g et fermantes s/)//g. Pour le reste, je te laisse l'adapter à tes desiderata...
Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015) LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr LÀ. Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous... sudo add-apt-repository ppa:gambas-team/gambas3 sudo apt-get update sudo apt-get install gambas3 -y Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016) Pour la Doc, c'est vers là: Documentation Gambas3 FR | ||
12 |