Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/07/2011, à 14:05

Yohann22

Redirection et filtrage du résultat d'une commande

Bonjour à Toutes et Tous !

J'ai un petit soucis de mémoire ^^ ! Je me souviens que pour rediriger le résultat d'une commande il faut utiliser > ou >>. Dans mon cas, je souhaite effacé le fichier précédent, donc il faut que j'utilise >.

Mais ! (parce qu'il y a toujours un "mais" ^^) je souhaite rediriger qu'une partie du résultat de ma commande dans mon fichier.

Plus concrètement, je suis en train de monter un linux le plus soft possible pour une application professionnelle (je n'ai aucune interface graphique a proprement dit ; pas de gestion de fichier etc. etc.) j'ai simplement un serveur graphique de manière a faire tourner google chrome et deux/trois drivers servant à faire tourner un écran tactile, une imprimante, etc.

J'ai donc trouvé comment calibrer l'imprimante, l'écran tactile, et tous les périphériques dont j'ai besoin (en "dur" de manière à ce que l'utilisateur final n'ait pas à le faire tout le temps). Et dans le cas de l'écran tactile (on m'a demandé de laisser la possibilité à l'utilisateur final de le calibrer). Il faut donc qu'il écrive sur les valeurs mises en dur dans un fichier.

De manière encore plus concrète :

Lorsque j'utilise la commande " xinput_calibrator " (qui me permet logiquement de calibrer mon écran tactile) j'obtiens ceci :

Calibrating EVDEV driver for "eGalax Inc. USB TouchController" id=12
    current calibration values (from XInput): min_x=0, max_x=2047 and min_y=0, max_y=2047

Doing dynamic recalibration:
    Setting new calibration data: 1947, 111, 98, 1893


--> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"
    Identifier    "calibration"
    MatchProduct    "eGalax Inc. USB TouchController"
    Option    "Calibration"    "1947 111 98 1893"
EndSection

Et je voudrai récupérer ceci :

Section "InputClass"
    Identifier    "calibration"
    MatchProduct    "eGalax Inc. USB TouchController"
    Option    "Calibration"    "1947 111 98 1893"
EndSection

Pour le placer dans un dossier (ou se trouve le calibrage " en dur " de mon écran ).

J'ai donc essayer un " xinput_calibrator > /par_ici/par_la/et_par_la_aussi/mon_fichier_de_conf " mais comme vous le savez, ça copie l'intégralité du résultat de la commande.

Ma question est donc : Comment copier, seulement la partie qui m'intéresse pour le calibrage de mon écran tactile ?

Thank U veri Mouche, de votre lecture ^^ !

En espérant avoir été clair !

Yohann wink

Hors ligne

#2 Le 13/07/2011, à 15:45

AnsuzPeorth

Re : Redirection et filtrage du résultat d'une commande

Bjr,
Si tu as sed installé (vu que tu fais dans le minima, on sait jamais ...)
[ le cat fichier est pour simuler la sortie de commande, mais plutot qu'un pipe, tu peux utiliser sed ... < <(cmd) ]

:~$ cat '/home/fichier' | sed -n '/Section "InputClass"/,/EndSection/p'
    Section "InputClass"
        Identifier    "calibration"
        MatchProduct    "eGalax Inc. USB TouchController"
        Option    "Calibration"    "1947 111 98 1893"
    EndSection

Sinon en bash, il suffit de lire la sortie, lever et baisser un drapeau qd il faut pour écrire le fichier.

flag=false
while read line
  do
    [[ "$line" =~ 'Section "InputClass"' ]] && flag=true
    [[ "$line" =~ 'EndSection' ]] && echo $line && break
    if "$flag"; then echo $line; fi
  done < <(commande)
exit

Dernière modification par AnsuzPeorth (Le 13/07/2011, à 16:00)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 13/07/2011, à 15:55

Yohann22

Re : Redirection et filtrage du résultat d'une commande

Merci de ton aide, j'ai trouvé une solution ^^ :

ma commande | grep -i "Section" --after-counter=5 > la_ou_je_veux_le_mettre/dans_ce_fichier

Hors ligne

#4 Le 13/07/2011, à 15:58

AnsuzPeorth

Re : Redirection et filtrage du résultat d'une commande

Yohann22 a écrit :

Merci de ton aide, j'ai trouvé une solution ^^ :

ma commande | grep -i "Section" --after-counter=5 > la_ou_je_veux_le_mettre/dans_ce_fichier

C'est vrai que vu tu as un nombre connu de ligne à récupérer, grep suffit, sinon, l'option sed ou fullbash serait obligatoire !

Dernière modification par AnsuzPeorth (Le 13/07/2011, à 15:59)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 13/07/2011, à 16:04

nesthib

Re : Redirection et filtrage du résultat d'une commande

@Yohann22 : tu vois que tu reçois plein d'alternatives smile

une solution en awk :

xinput_calibrator | awk '/Section/,/EndSection/'

l'avantage de awk sur sed est qu'il est plus puissant si tu veux ajouter des conditions plus fortes (ne section, mot clé dans la section…).

edit : et sinon l'option de grep est --after-context 5 (pas counter) que tu peux résumer en -A5
et il est inutile de mettre l'option i de grep (insensible à la casse) si tu fixes une casse (Section) par la suite

Dernière modification par nesthib (Le 13/07/2011, à 16:16)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne