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 05/08/2015, à 18:09

Compte anonymisé

[Résolu] Impossible récupérer partie d'une expression avec sed/cut

Bonjour,

Ayant eut un petit problème avec la version française de VLC, je souhaite faire un script me permettant de faire l'installation directement.

J'ai commencé par rechercher la version de VLC par

~$ vlc --version
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
VLC version 2.1.6 Rincewind (2.1.6-0-gea01d28)
Traductions © 2008-2013 Éric Lassauge
Compilé par buildd sur brownie.buildd (Mar 26 2015 02:41:27)
Traduction : Éric Lassauge - Team français traduction VLC
Compilateur : gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
Ce programme est fourni SANS AUCUNE GARANTIE, tel que permis par la loi.
Vous pouvez le redistribuer selon les termes de la Licence Publique Générale GNU;
voir le fichier COPYING pour plus de détails.
Écrit par l'équipe VideoLAN; voir le fichier AUTHORS.
~$

J'ai réussi à ne prendre que la première ligne

~$ vlc --version | grep -o -m 1 'VLC media player/ .*'
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
~$ 

j'ai en suite essayé d'isoler le "2.1.6" en essayant la commande

~$ vlc --version | grep -o -m 1 'VLC media player/ .*'| cut -c 17-21
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
~$ 

mais la ligne reste entière
j'ai eut cette commande en m'aidant du manuel cut

j'ai également tenté le

~$  vlc --version | grep -o -m 1 'VLC media player\ .*' | sed 's/ Rincewind /#/g'
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
~$ 
~$ vlc --version | grep -o -m 1 'VLC media player\ .*' | sed 's/\ Rincewind\ /#/g'
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
~$ 

Afin de remplacer " Rincewind " par un "#" et supprimer à partir de ce point comme l'indique la doc mais rien n'y fait

à titre d'info, je recherche à faire une commande du style :

wget -P ~/Téléchargement http://download.videolan.org/videolan/vlc/$fichier/vlc-$fichier.tar.xz

j'ai déjà tenté cette commande pour voir et ça semble fonctionner

~$ fichier="2.1.6" && wget -P ~/Téléchargement http://download.videolan.org/videolan/vlc/$fichier/vlc-$fichier.tar.xz
--2015-08-05 19:17:06--  http://download.videolan.org/videolan/vlc/2.1.6/vlc-2.1.6.tar.xz
Résolution de download.videolan.org (download.videolan.org)... 88.191.250.2
Connexion vers download.videolan.org (download.videolan.org)|88.191.250.2|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Taille : 19437284 (19M) [application/octet-stream]
Enregistre : «/home/bruno/Téléchargement/vlc-2.1.6.tar.xz»

100%[========================================================================================>] 19 437 284  1,35MB/s   ds 14s    

2015-08-05 19:17:20 (1,33 MB/s) - «/home/bruno/Téléchargement/vlc-2.1.6.tar.xz» enregistré [19437284/19437284]

~$ 

Quelqu'un aurait-il une idée à me suggérer ?

Merci à vous

PS : j'ai fini le reste du script. en attendant l'ai mit le numéro de version dans fichier par fichier="2.1.6" voici le script

#!/bin/bash
# indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier.
# En cas général les "#" servent à faire des commentaires comme ici

fichier="2.1.6" 
wget -P /tmp http://download.videolan.org/videolan/vlc/$fichier/vlc-$fichier.tar.xz
mkdir /tmp/vlc-$fichier && cd /tmp/vlc-$fichier
tar -Jxvf /tmp/vlc-$fichier.tar.xz
sudo mv /tmp/vlc-$fichier/vlc-$fichier/po/fr.gmo /usr/share/locale/fr/LC_MESSAGES/vlc.mo
rm -r /tmp/vlc-$fichier && rm /tmp/vlc-$fichier.tar.xz && cd

Dernière modification par NéoUbuntonien (Le 06/08/2015, à 11:44)

#2 Le 06/08/2015, à 07:51

credenhill

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

hello

$ vlc --version | awk '{print $4; exit}' 
2.1.6

Dernière modification par credenhill (Le 06/08/2015, à 07:52)

Hors ligne

#3 Le 06/08/2015, à 08:39

bruno

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

J'y avais pensé aussi, mais cela ne fonctionne pas avec VLC (au moins sur l'ordinateur où je l'ai testé). Pour une raison que j'ignore, VLC renvoie systématique cette ligne avant tout traitement :

VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)

Le résultat de ta commande donne chez moi :

$ vlc --version | awk '{print $4; exit}' 
VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28)
Rincewind

La commande qui fonctionne :

$ vlc --version 2>/dev/null | awk '{print $3; exit}' 
2.1.6

Hors ligne

#4 Le 06/08/2015, à 09:24

credenhill

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

effectivement, ou bien

 vlc --version 2>&1| awk '{print $4; exit}' 

Hors ligne

#5 Le 06/08/2015, à 11:44

Compte anonymisé

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

Voila mon fichier terminé...

#!/bin/bash
# indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier.
# En cas général les "#" servent à faire des commentaires comme ici

fichier=$(vlc --version 2>&1 | awk '{print $3; exit}')
wget -P /tmp http://download.videolan.org/videolan/vlc/$fichier/vlc-$fichier.tar.xz
mkdir /tmp/vlc-$fichier && cd /tmp/vlc-$fichier
tar -Jxvf /tmp/vlc-$fichier.tar.xz
sudo mv /tmp/vlc-$fichier/vlc-$fichier/po/fr.gmo /usr/share/locale/fr/LC_MESSAGES/vlc.mo
rm -r /tmp/vlc-$fichier && rm /tmp/vlc-$fichier.tar.xz && cd

Merci à tous ceux et toutes celles qui m'ont apporté leur aide

la seule chose que je ne comprend pas trop c'est le 2>&1 dans

vlc --version 2>&1

pour le awk, par contre, j'ai compris

-----

credenhill a écrit :

effectivement, ou bien

vlc --version 2>&1| awk '{print $4; exit}' 

sauf que pour moi :

~$  vlc --version 2>&1| awk '{print $4; exit}' 
Rincewind

------

Enfin, pour l'extention tar (.tar.xz), suivre la doc ubuntu-doctar et plus spécifiquement la section
ubuntu-docCompression avec Lzma (.tar.xz)

Installer le paquet apt xz-utilis comme l'indique la documentation

Dernière modification par NéoUbuntonien (Le 06/08/2015, à 12:56)

#6 Le 06/08/2015, à 13:53

bruno

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

Tentative d'explication :

la première ligne de la sortie de vlc --version (de vlc avec n'importe quelle option en fait)  est envoyé sur STDERR (j'ignore pourquoi). Elle n'est donc pas traitée lorsqu'on utilise un « pipe » : truc | machin, qui envoie sur l’entrée standard (STDIN) de machin la sortie standard (STDOUT) de truc.
Il faut donc éliminer la sortie STDERR de la commande vlc en la redirigeant vers /dev/null : 2>/dev/null comme dans mon exemple, et se concentrer sur la deuxième ligne où le numéro de version est bien en troisième position.

NB: je ne comprends pas pourquoi cela marche également avec une redirection de STDERR vers STDOUT : 2>&1

Dernière modification par bruno (Le 06/08/2015, à 13:54)

Hors ligne

#7 Le 06/08/2015, à 14:18

credenhill

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

en redirigeant stderr vers stdout, la 1ère ligne sera passée par stdout dans la commande après | et traitée comme les autres

Hors ligne

#8 Le 06/08/2015, à 16:04

Compte anonymisé

Re : [Résolu] Impossible récupérer partie d'une expression avec sed/cut

Ok, merci à vous deux smile