Extraire des expressions d'un fichier text ( en bash )
Résolu
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> </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> </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> </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.
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> </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> </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> </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.
3 réponses
-
ContributeurSalut,
$ cat brol
/*
<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> </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> </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> </td></tr>
<tr><td valign="top"><img src="/icons/sound2.gif" alt="[SND]"></td><td><a href="N0022.mp3">N0022.mp3</a></td><td align="right">02-Apr-2014 12:56 </td><td align="right">152K</td><td> </td></tr>
*/
$ mapfile -O 1 -t TAB < <(grep -Po '.*>\K[^<]*mp3' brol)
$ echo "${#TAB[@]}"
4
$ for ((i=1;i<=${#TAB[@]};i++)); do echo ${TAB[${i}]};done
N0001.mp3
N0017.mp3
N0021.mp3
N0022.mp3
$ echo "${TAB[2]}"
N0017.mp3
-
Contributeurhello
variante avec grep$ t=($(grep -oP '(?<=href=").*mp3(?=">)' fichier))
$ echo ${#t[@]}
4
$ echo ${t[@]}
N0001.mp3 N0017.mp3 N0021.mp3 N0022.mp3
$ -
Merci beaucoup les gars, j'ai réussi :)