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 21/02/2016, à 21:03

psylo24

[Résolu] probléme avec sed

Bonsoir tout le monde,

J'aimerais que à partir d'un fichier donné (voir ci dessous) ca me supprime les espaces et que ca me les remplace par un retour chariot mais le probléme c"est que la longueur des espace est différente donc ca me créé trop de retour chariot , je  m'en explique :

Fichier source :

3550     1600      550      350      500     1200 
      500      400      500      350      500      350 
      500      350      500      400      500      350 
      500      350      500      400      450      400 
      500      350      500      350      500     1250 
      500      350      500      400      450      400 
      450      400      500      350      500      400 
      450      400      500     1250      450     1250 
      500     1250      450      400      450      400 
      500     1250      450      400      500      350 
      500      400      450      400      450      400 
      500      400      450      400      450      400 
      500      350      500      400      450      400 
      450      400      500      400      450      400 
      450      400      450      	400      500      400 
      450      400      450      400      500      400 
      450      400      450      400      450      400 
      500      400      450      400      450      400 
      450      450      450      400      450      400 
      450      400      500     1250      450     1300 
      450      400      450      400      450      400 
      450      450      450      400      450     9950 
     3450     1700      450      400      450     1300 
      450      400      450      450      450      400 
      450      400      450      450      400      450 
      450      400      450      400      450      450 
      450      400      450      400      450     1300 
      450      400      450      400      450      450 
      450      400      450      400      450      450 
      400      450      450     1250      450     1300 
      450     1300      400      450      450      400 
      450     1300      450      400      450      400 
      450      450      400      450      450      400 
      450      400      450      450      450      400 
      450      400      450      450      400      450 
      450      400      450      400      450     1300 
      450      400      450      450      400     1300 
      450      400      450      450      450      400 
      450      400      450      450      400     1300 
      450      400      450      450      450      400 
      450     1300      400      450      450      400 
      450      400      450      450      450      400 
      450      400      450      450      400      450 
      450      400      450     1300      450      400 
      450     1300      400      450      450      400 
      450      450      400     1300      450      400 
      450     1300      450      400      450      450 
      400     1300      450     1300      400      450 
      450      400      450      450      400      450 
      450      400      450      400      450      450 
      400      450      450      400      450      450 
      400      450      450      400      450      400 
      450     1300      450     1300      400     1300 
      450      400      450      450      400      450 
      450      400      450      450      400      450 
      450      400      450      400      450      450 
      400     1300      450     1300      450     1250 
      450      450      400      450      450      400 
      450      450      400      450      450      400 
      450      400      450      450      400      450 
      450      400      450      450      400      450 
      450      400      450      450      400      450 
      400      450      450     1300      400      450 
      450      400      450      450      400      450 
      400      450      450      400      450     1300 
      450      400      450      450      400      450 
      400      450      450      400      450      450 
      400      450      450      400      450      450 
      400      450      400      450      450      400 
      450      450      400      450      450      400 
      450      450      400      450      400     1300 
      450     1300      450     1300      400      450 
      400      450      450     1300      400     1300 
      450

Quand je fais un "sed -e "s/      /\n/g" < a"
Ça me retourne en partie :  (pour l'exemple)

450
450 

400
450
400
450
450
400 

450
450
400
450
450
400 

450
450
400
450
400     1300 

450     1300
450     1300
400
450 

400
450
450     1300
400     1300 

450

or je voudrais avoir un chiffre par ligne et donc aucun espace par exemple :

450
450
450
500
1300
....

Merci par avance pour votre aide smile

Dernière modification par psylo24 (Le 21/02/2016, à 22:16)

Hors ligne

#2 Le 21/02/2016, à 21:20

pingouinux

Re : [Résolu] probléme avec sed

Bonsoir,
Par exemple

printf "%s\n" $(cat fichier)

Ajouté :
Ou bien

$ sed "s/ \+/\n/g" fichier | sed "/^$/d"

Dernière modification par pingouinux (Le 21/02/2016, à 21:26)

Hors ligne

#3 Le 21/02/2016, à 21:39

psylo24

Re : [Résolu] probléme avec sed

en fait mon fichier source je l’obtient avec la commande "mode2 -d /dev/lirc0 -m", et je voudrais en fait que ca me formate directement le fichier, par exemple :

sudo mode2 -d /dev/lirc0 -m | sed -e "s/     /\n/g" | sed "/^$/d" 

mais quand je fais ca je suis obligé d'appuyer 2 fois sur le bouton de ma télécommande pour avoir un résultat, du coup ca me retourne 2 captures.

or si je fais

sudo mode2 -d /dev/lirc0 -m | sed -e "s/     /\n/g" 

un seul appuie de bouton fonctionne mais j'ai des lignes vides sad

Dernière modification par psylo24 (Le 21/02/2016, à 21:44)

Hors ligne

#4 Le 21/02/2016, à 21:53

pingouinux

Re : [Résolu] probléme avec sed

Dans ce cas, ceci devrait marcher :

sudo mode2 -d /dev/lirc0 -m | sed "s/ \+/\n/g" | sed "/^$/d"

Ajouté : Je n'ai vu l'édition du #3 qu'après avoir écrit ma réponse. Je ne comprends pas ton histoire de télécommande.

Dernière modification par pingouinux (Le 21/02/2016, à 21:59)

Hors ligne

#5 Le 21/02/2016, à 21:56

helias

Re : [Résolu] probléme avec sed

Bonjour Psylo24,

Excuse moi d'avance je n'ai pas beaucoup de temps pour te répondre, je proposerais donc une ligne de code vraiment pas abouti.
Pour ce qui est de virer les espaces et les lignes vides, tu as la commande " N et D " qui sont la pour ça wink

par exemple :

cat monfichier| sed -e 's/ /\n/g' | sed -re '/^$/ {N;D}' 

ce qui devrais faire plus ou moins le job je pense.
Pas eu le temps de tester mais ça devrais fonctionner. Le premier sed rassemble les chiffres entre eux et met des retour a la ligne ( beaucoup ... ) donc je demande au deuxième de les virer avant et après wink

Tiens nous au courant pour la suite.
Hélias

Dernière modification par helias (Le 21/02/2016, à 21:59)

Hors ligne

#6 Le 21/02/2016, à 21:57

psylo24

Re : [Résolu] probléme avec sed

pingouinux a écrit :

Dans ce cas, ceci devrait marcher :

sudo mode2 -d /dev/lirc0 -m | sed "s/ \+/\n/g" | sed "/^$/d"

Merci mais non car là je suis obligé d'appuyer 3 fois sur le bouton sad

Hors ligne

#7 Le 21/02/2016, à 22:02

psylo24

Re : [Résolu] probléme avec sed

Bon pour reprender à 0, ma commande mod2  me retourne exactement :

  3849041

      450   989989

     3550     1650      500      350      500     1250
      500      350      500      350      500      400
      500      350      500      350      500      350
      500      400      500      350      500      350
      500      400      450      400      500     1200
      500      400      450      400      500      350
      500      400      450      400      450      400
      500      350      500     1250      500     1250
      450     1250      500      350      500      400
      450     1250      500      400      450      400
      450      400      500      350      500      400
      450      400      450      400      500      400
      450      400      450      400      500      350
      500      400      450      400      450      400
      500      400      450      400      450      400
      450      400      500      400      450      400
      450      400      450      450      450      400
      450      400      450      450      450      400
      450      400      450      400      450      450
      450      400      450     1300      450     1250
      450      400      450      450      450      400
      450      400      450      450      400     9950
     3500     1700      450      400      450     1300
      450      400      450      400      450      450
      400      450      450      400      450      400
      450      450      450      400      450      400
      450      450      400      450      450     1250
      450      450      450      400      450      400
      450      450      400      450      450      400
      450      400      450     1300      450     1300
      400     1300      450      400      450      450
      450     1250      450      450      400      450
      450      400      450      400      450      450
      450      400      450      400      450      450
      400      450      450      400      450      450
      400      450      450      400      450     1300
      400      450      450      400      450     1300
      450      400      450      400      450      450
      450      400      450      400      450     1300
      450      400      450     1300      450      400
      450     1300      400      450      450      400
      450      400      450      450      450      400
      450      400      450      450      400      450
      450      400      450     1300      450      400
      450     1300      400      450      450      400
      450      400      450     1300      450      400
      450     1300      450      400      450      400
      450     1300      450     1300      400      450
      450      400      450      450      400      450
      450      400      450      400      450      450
      400      450      450      400      450      450
      400      450      450      400      450      400
      450     1300      450     1300      400     1300
      450      400      450      450      400      450
      450      400      450      450      400      450
      450      400      450      400      450      450
      400     1300      450     1300      450     1300
      400      450      400      450      450      400
      450      450      400      450      450      400
      450      400      450      450      400      450
      450      400      450      450      400      450
      450      400      450      450      400      450
      400      450      450     1300      400      450
      450      400      450      450      400      450
      400      450      450      400      450     1300
      450      400      450      450      400      450
      400      450      450      400      450      450
      400      450      450      400      450      450
      400      450      450      400      450      400
      450      450      400      450      450      400
      450      450      400      450      450     1300
      400     1300      450      400      450     1300
      450      400      450     1300      400     1300

Je voudrais que :
-supprimer les 4premiéres lignes
-avoir un chiffre par ligne

3500
1750
450
500
...

Hors ligne

#8 Le 21/02/2016, à 22:04

pingouinux

Re : [Résolu] probléme avec sed

psylo24 #6 a écrit :

Merci mais non car là je suis obligé d'appuyer 3 fois sur le bouton

Je ne connais pas mode2 et ne vois pas ce que tu veux dire.
Sinon, tu peux toujours passer par un fichier intermédiaire.

sudo mode2 -d /dev/lirc0 -m >/tmp/provi
cat /tmp/provi | sed "s/ \+/\n/g" | sed "/^$/d"[
rm /tmp/provi

Hors ligne

#9 Le 21/02/2016, à 22:07

pingouinux

Re : [Résolu] probléme avec sed

Pour supprimer les 4 premières lignes, en plus du reste :

sed "1,4d;s/ \+/\n/g" | sed "/^$/d"

Hors ligne

#10 Le 21/02/2016, à 22:08

helias

Re : [Résolu] probléme avec sed

cat monfichier | sed '1,4d' | sed -e 's/ /\n/g' | sed -re '/^$/ {N;D}'

essaye en remplaçant le cat par mod2 même si je ne connais pas ça fonctionnera sûrement ?

Dernière modification par helias (Le 21/02/2016, à 22:09)

Hors ligne

#11 Le 21/02/2016, à 22:13

psylo24

Re : [Résolu] probléme avec sed

Merci bien, le code final est

cat tt |  sed '1,4d' | sed -e "s/     /\n/g" | sed '/^$/d'

mais ça ne m'arrange pas de passer par un fichier intermédiaire mais si j'ai pas le choix je vais faire avec smile

mode2 est un module de LIRC  qui permet d'avoir le code raw (impulsions) de télécommandes infra rouge, quand tu appuis sur un bouton ca envoie des codes similaires qui correspondent aux imputions 0 et 1.

En fait je pense savoir pourquoi ca ne fonctionne pas car mode2 est en en mode 'écoute'du coup il affiche les code qu'il recoit mais le 'logiciel' ne se ferme pas donc ca n'arrive pas à traiter les données derrières, il faut que je fasse un 'sudo mode2 -d /dev/lirc0 -m > temp' puis que je modifie le fichier temp.

Il ne me reste plus qu'à faire un script pour automatiser tout ca.

Encore merci à vous pour votre efficacité

Dernière modification par psylo24 (Le 21/02/2016, à 22:15)

Hors ligne