Récupérer du texte dans un fichier pour y mettre en variable
Résolu/Fermé
xunil2003
Messages postés
765
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
5 septembre 2024
-
Modifié par xunil2003 le 8/03/2013 à 15:36
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 9 mars 2013 à 18:50
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 9 mars 2013 à 18:50
A voir également:
- Récupérer du texte dans un fichier pour y mettre en variable
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
5 réponses
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
8 mars 2013 à 15:59
8 mars 2013 à 15:59
hello
une variable pour tout ?
une variable pour tout ?
$ CHAINES=$(awk -F"[(:_]" '{print $1, $3, $7, $NF}' fichier) $ echo "$CHAINES" France 5 490000000 8 260 France Ô 490000000 8 261 ARTE HD 506000000 8 1031 ARTE 514000000 8 1543 M6 506000000 8 1025 W9 506000000 8 1026 NT1 506000000 8 1027 NRJ12 514000000 8 1538 TMC 514000000 8 1542 HD1 538000000 8 2561 L'Equipe 21 538000000 8 2562 $
xunil2003
Messages postés
765
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
5 septembre 2024
14
Modifié par xunil2003 le 8/03/2013 à 19:23
Modifié par xunil2003 le 8/03/2013 à 19:23
Bonjour,
Merci pour votre réponse.
Mais votre solution ne peut pas aller dans mon script.
Vu que je dois écrire un nouveau fichier pour la conversion.
C'est pour cela que je dois récupérer le le contenu dans une variable pour chacun des textes à récupérer afin de les écrire dans un nouveau fichier.
Mon script
Merci pour votre réponse.
Mais votre solution ne peut pas aller dans mon script.
Vu que je dois écrire un nouveau fichier pour la conversion.
C'est pour cela que je dois récupérer le le contenu dans une variable pour chacun des textes à récupérer afin de les écrire dans un nouveau fichier.
Mon script
#!/bin/bash echo "" echo "+------------------------------------------------------+" echo "| Conversion du fichier channels.conf en m3u de w_scan |" echo "+------------------------------------------------------+" echo "" read -p "Veuillez indiquer l'adaptateur a utiliser" echo " Par default : 0 = pour l'adapter0" read -p "Appuyer sur une touche pour continuer ..." ADAPTATEUR PLAYLIST=$2 SOURCEFICHIER=$1 echo "#EXTM3U" > $PLAYLIST echo "Veuillez patienter pendant que le fichier $SOURCEFICHIER est analysé" cat $SOURCEFICHIER | while read FICHIER # Analyser le nom du canal, la fréquence, le BANDWIDTH et le numéro du programme do CHAINENOM=$(echo "$FICHIER" | sed 's/\:.*$//') CHAINEFREQ=$(echo $FICHIER | sed 's/\:/+/1' | sed 's/.*+//' | sed 's/\:.*//' | sed 's/$/000/') CHAINEBANDWIDTH=$(echo $FICHIER | sed '??????????????') CHAINEPROGRAMME=$(echo "$FICHIER" | sed '???????') # les informations à écrire dans le nouveau fichier converties en m3u echo "#EXTM3U" >> $PLAYLIST echo "#EXTINF:0,$CHAINENOM" >> $PLAYLIST echo "#EXTVLCOPT:dvb-adapter=$ADAPTATEUR" >> $PLAYLIST echo "#EXTVLCOPT:dvb-frequency=$CHAINEFREQ" >> $PLAYLIST echo "#EXTVLCOPT:dvb-bandwidth=$CHAINEBANDWIDTH" >> $PLAYLIST echo "#EXTVLCOPT:dvb-bandwidth=$CHAINEPROGRAMME" >> $PLAYLIST #echo "dvb-t://" >> $PLAYLIST echo "dvb://" >> $PLAYLIST done echo "Le fichier $PLAYLIST est créer" echo "Pour vérifier le bon fonctionnement du fichier veuillez taper :" echo "vlc $PLAYLIST"
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
Modifié par zipe31 le 8/03/2013 à 19:51
Modifié par zipe31 le 8/03/2013 à 19:51
Salut,
Tu peux adapter la solution de dubcek à ton script en récupérant dans chaque variable que le numéro de champ qui convient...
Sinon avec sed ça donnerait ça :
Tu peux adapter la solution de dubcek à ton script en récupérant dans chaque variable que le numéro de champ qui convient...
CHAINENOM=$(awk -F"[(:_]" '{print $1}' <<<${FICHIER}) CHAINEFREQ=$(awk -F"[(:_]" '{print $3}' <<<${FICHIER}) CHAINEBANDWIDTH=$(awk -F"[(:_]" '{print $7}' <<<${FICHIER}) CHAINEPROGRAMME=$(awk -F"[(:_]" '{print $NF}' <<<${FICHIER})
Sinon avec sed ça donnerait ça :
CHAINENOM=$(sed -n 's/\([^(]*\)(.*/\1/p' <<<${FICHIER}) CHAINEFREQ=$(sed -n 's/[^:]*:\([^:]*\):.*/\1/p' <<<${FICHIER}) CHAINEBANDWIDTH=$(sed -n 's/.*BANDWIDTH_\([^_]*\)_.*/\1/p' <<<${FICHIER}) CHAINEPROGRAMME=$(sed -n 's/.*:\([^ ]*\) *$/\1/p' <<<${FICHIER})
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
Modifié par dubcek le 9/03/2013 à 09:25
Modifié par dubcek le 9/03/2013 à 09:25
awk -F"[(:_]" '{print $1, $3, $7, $NF}' $SOURCEFICHIER | while read CHAINENOM CHAINEFREQ CHAINEBANDWIDTH CHAINEPROGRAMME ; do ... ... done
dubcek
Messages postés
18744
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
4 septembre 2024
5 617
9 mars 2013 à 14:10
9 mars 2013 à 14:10
et aussi
while read FICHIER ; do oIFS=$IFS; IFS="(:_"; set -- $FICHIER; CHAINENOM=$1; CHAINEFREQ=$3; CHAINEBANDWIDTH=$7; CHAINEPROGRAMME=${!#} IFS=$oIFS ... ... done < $SOURCEFICHIER
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
xunil2003
Messages postés
765
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
5 septembre 2024
14
9 mars 2013 à 16:55
9 mars 2013 à 16:55
Bonjour,
Merci à tous pour vos réponse.
Dans un autre fichier je dois ajouter a chaque ligne le mot "adapater=5:"
entre le mot "satno=1:" et "frequency=10723000:"
Extrait du fichier
Comment dois je faire ?
Merci.
Merci à tous pour vos réponse.
Dans un autre fichier je dois ajouter a chaque ligne le mot "adapater=5:"
entre le mot "satno=1:" et "frequency=10723000:"
<location>dvb-s://satno=1:frequency=10723000:voltage=18:srate=29900000</location>
Extrait du fichier
<title>0004. Deepam TV</title> <location>dvb-s://satno=1:frequency=10723000:voltage=18:srate=29900000</location> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>3</vlc:id> <vlc:option>program=4606</vlc:option> </extension> </track> <track> <title>0005. NPR</title> <location>dvb-s://satno=1:frequency=10723000:voltage=18:srate=29900000</location> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>4</vlc:id> <vlc:option>program=4614</vlc:option> </extension> </track> <track> <title>0006. Thendral</title> <location>dvb-s://satno=1:frequency=10723000:voltage=18:srate=29900000</location> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>5</vlc:id> <vlc:option>program=4622</vlc:option> </extension> </track> <track> <title>0007. RDPi Radio</title> <location>dvb-s://satno=1:frequency=10723000:voltage=18:srate=29900000</location> <extension application="http://www.videolan.org/vlc/playlist/0"> <vlc:id>6</vlc:id> <vlc:option>program=4630</vlc:option> </extension> </track> <track>
Comment dois je faire ?
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 415
9 mars 2013 à 18:50
9 mars 2013 à 18:50
sed '/satno=1/{s/:/&adapater=5&/2}' fichier