#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=2047Doing 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
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
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
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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne