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 02/04/2014, à 13:45

master_29

Extraire des expressions d'un fichier text ( en bash )

Bonjour,

J'aimerai extraire des expressions qui se trouve dans un fichier, et les mettre dans un tableau, le fichier est le suivant :
/*

<tr><td valign="top"><img src="/icons/sound2.gif" alt="[SND]"></td><td><a href="N0001.mp3">N0001.mp3</a></td><td align="right">02-Apr-2014 11:39  </td><td align="right"> 46K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/sound2.gif" alt="[SND]"></td><td><a href="N0017.mp3">N0017.mp3</a></td><td align="right">02-Apr-2014 12:56  </td><td align="right"> 51K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/sound2.gif" alt="[SND]"></td><td><a href="N0021.mp3">N0021.mp3</a></td><td align="right">02-Apr-2014 12:56  </td><td align="right">152K</td><td>&nbsp;</td></tr>
<tr><td valign="top"><img src="/icons/sound2.gif" alt="[SND]"></td><td><a href="N0022.mp3">N0022.mp

*/

et je veux récupérer les expressions  "quelques chose .mp3"  et les mettre dans un tableau avec ( grep et sed ).

J'ai vu dans autres postes qu'il avait des réponses à des trucs comme ça mais je ne connais pas la signification de certains symboles du coup j'ai pas pu le faire.

Dernière modification par master_29 (Le 02/04/2014, à 16:58)

Hors ligne

#2 Le 02/04/2014, à 22:04

temps

Re : Extraire des expressions d'un fichier text ( en bash )

Bonjour,
Voir sed et sur un autre site awk

Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#3 Le 03/04/2014, à 06:42

pingouinux

Re : Extraire des expressions d'un fichier text ( en bash )

Bonjour,
Si, comme dans ton exemple, il y a une ligne par fichier .mp3, et que ces derniers ne contiennent pas d'espaces :

tablo=( $(sed -r 's/.*<a href="([^"]+\.mp3)">.*/\1/g' ton_fichier) )
for i in "${tablo[@]}"; do echo "$i"; done

Résultat

N0001.mp3
N0017.mp3
N0021.mp3
N0022.mp3

Hors ligne

#4 Le 03/04/2014, à 06:57

nesthib

Re : Extraire des expressions d'un fichier text ( en bash )

@temps : évite les réponses trop généralistes, surtout si celle ci sort la discussion de la liste des problèmes sans réponse.

Une solution avec grep :

tableau=($(grep -oP '(?<=<a href=")[^"]+' fichier))

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 03/04/2014, à 09:00

credenhill

Re : Extraire des expressions d'un fichier text ( en bash )

hello
avec awk

$ t=($(awk -F 'href="|3">' '{print $2 "3"}' fichier))
$ echo ${#t[@]}
4
$ echo ${t[@]}
N0001.mp3 N0017.mp3 N0021.mp3 N0022.mp3

Hors ligne

#6 Le 03/04/2014, à 13:27

master_29

Re : Extraire des expressions d'un fichier text ( en bash )

Bonjour merci à tous,
le code qui marche le mieux est celui de nesthib, mais ça m'affiche :
?C=N;O=D
?C=M;O=A
?C=S;O=A
?C=D;O=A
/partage/
N0001.mp3
N0017.mp3
N0021.mp3
N0022.mp3

et c'est pas ce que je veux comment je pourai afficher que les .mp3 ?

Hors ligne

#7 Le 03/04/2014, à 13:42

credenhill

Re : Extraire des expressions d'un fichier text ( en bash )

le awk peut être affiné avec

 t=($(awk -F 'href="|3">' '/\.mp3/ {print $2 "3"}' fichier))

Hors ligne

#8 Le 03/04/2014, à 13:49

pingouinux

Re : Extraire des expressions d'un fichier text ( en bash )

Et pour éliminer les lignes ne contenant pas la chaîne recherchée, avec le sed du #3 :

tablo=( $(sed -rn 's/.*<a href="([^"]+\.mp3).*/\1/pg' ton_fichier) )

Hors ligne

#9 Le 03/04/2014, à 14:34

master_29

Re : Extraire des expressions d'un fichier text ( en bash )

Merci beaucoup les gars, c'est bon ça marche

Hors ligne

#10 Le 03/04/2014, à 15:54

nesthib

Re : Extraire des expressions d'un fichier text ( en bash )

@master29 : est-ce que tu peux donner un extrait de la page web pour laquelle ma commande ne fonctionne pas ? Tu peux toujours ajouter « \.mp3 » à la fin de l'expression rationnelle pour avoir le motif « [^"]+\.mp3 », après tout ma commande récupère simplement les URL, sans distinction.

NB. évite de demander de l'aide par message privé, ça ne correspond pas à l'esprit du forum. Si tu as une question, pose la directement sur le forum.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 03/04/2014, à 17:38

master_29

Re : Extraire des expressions d'un fichier text ( en bash )

@nesthib : Je suis désolé pour le message privé, c'est bon j'ai modifié le code et ça marche wink

Hors ligne