#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
#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
-----
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 tar et plus spécifiquement la section
Compression avec Lzma (.tar.xz)
Installer le paquet 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)
#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