OVH Cloud OVH Cloud

"Nettoyer" un grep

4 réponses
Avatar
bpesenti_pala
Bonjour,

Je veux récupérer la liste des artistes de ma librairie iTunes.
Je fais donc un

grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes\ Music\
Library.xml | uniq

ce qui me donne une liste de

<key>Artist</key><string>Probot</string>


Je voudrais juste garder ce qu'il y a entre <string> et </string>

Comment faire ?



J'ai bien fait:
grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes\ Music\
Library.xml | sed 's+<key>Artist</key><string>++' | sed 's+</string>++'
| sort -f -u

Ca marche (sauf que j'ai encore les espaces en début de ligne), mais il
doit bien exister un truc plus propre, non ?

4 réponses

Avatar
Saïd
Bruno :
J'ai bien fait:
grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | sed 's+<key>Artist</key><string>++' | sed 's+</string>++'
| sort -f -u

Ca marche (sauf que j'ai encore les espaces en début de ligne), mais il
doit bien exister un truc plus propre, non ?


grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | perl -pe 's#.*<string>(.*)</string>.*#$1#'

--
Saïd.

Avatar
bpesenti_pala
Saïd wrote:

grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | perl -pe 's#.*<string>(.*)</string>.*#$1#'


C'est parfait :-)

Merci.

Avatar
Vincent NICOLAS
In article , Saïd
wrote:

Bruno :
J'ai bien fait:
grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | sed 's+<key>Artist</key><string>++' | sed 's+</string>++'
| sort -f -u

Ca marche (sauf que j'ai encore les espaces en début de ligne), mais il
doit bien exister un truc plus propre, non ?


grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | perl -pe 's#.*<string>(.*)</string>.*#$1#'


Ce que j'aime avec Perl, c'est la limpidité de sa syntaxe... ;-)
Euh, juste une petite question, le # remplace le / dont j'ai l'habitude
: c'est parce que perl prend le premier caractère après le "s" où est-ce
toujours comme ça ?

--
Vincent Nicolas
En direct de Lyon



Avatar
Éric Lévénez
Le 17/05/04 22:59, dans
, « Vincent NICOLAS »
a écrit :

In article , Saïd
wrote:

grep -e "<key>Artist</key>" /Users/bruno/Music/iTunes/iTunes Music
Library.xml | perl -pe 's#.*<string>(.*)</string>.*#$1#'


Ce que j'aime avec Perl, c'est la limpidité de sa syntaxe... ;-)
Euh, juste une petite question, le # remplace le / dont j'ai l'habitude
: c'est parce que perl prend le premier caractère après le "s" où est-ce
toujours comme ça ?


sed fait pareil, vi fait pareil, enfin tout le monde a toujours fait comme
cela. L'utilisation du / n'est qu'une habitude.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.