SH - Recupérer txt situé entre parenthèse

Résolu/Fermé
mp3yeur - Modifié le 15 juin 2018 à 10:32
 Utilisateur anonyme - 24 mars 2009 à 15:48
Bonjour à tous,

Après de longues recherches infructueuses, je recherche toujours une solution à mon problème :

Dans un script SH, je recherche à récuperer depuis un fichier CSS (en gros un fichier texte) la portion de texte, qui est différente à chaque fois :

#navCatTabs {background:url(../images/bg2.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}
.....etc........


Au moyen d'un grep j'ai récupéré uniquement les lignes qui contienent le mot "images"... Seulement, il n'y a pas une seule ligne qui est identique à l'autre, je souhaite conserver uniquement l'adresse ../images/bg.gif, sous forme de fichier texte :

../images/bg.gif
../images/toto.gif
../images/tata.jpg
etc.......

Une idée

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
13 mars 2009 à 20:13
Salut,
[tmpfs]$ cat fich
#navCatTabs {background:url(../images/blu.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}
#navCatTabs {background:url(../images/bla.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}
#navCatTabs {background:url(../images/bg1.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}
#navCatTabs {background:url(../images/bg2.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}
#navCatTabs {background:url(../images/bg3.gif); color:#5E2F3B; font-weight:bold; margin-bottom:2px;}

[tmpfs]$ sed -n 's/.*(\(.*\)).*/\1/p' fich
../images/blu.gif
../images/bla.gif
../images/bg1.gif
../images/bg2.gif
../images/bg3.gif

[tmpfs]$
;-))
0
Merci !

Je teste, une chose est sûr, je n'aurai jamais trouvé seul ! Merci !
0
Utilisateur anonyme
Modifié le 15 juin 2018 à 10:33
Hello !

Je t'envoie le script complet, j'ai du louper un wagon, en fait j'obtiens en sortie ça :

sed: can't read .footer_bg: No such file or directory
.footer_bg
sed: can't read {background:url(../images/line_1.gif): No such file or directory
{background:url(../images/line_1.gif)
sed: can't read top: No such file or directory
top
sed: can't read repeat-x;: No such file or directory
repeat-x;
sed: can't read padding:13px: No such file or directory
padding:13px
sed: can't read 0: No such file or directory


Voici le script complet, :


#!/bin/sh

# Variables
# Site a capturer
page_html="http://osc3.template-help.com/zen_20196/index.php"
racine_site="http://osc3.template-help.com/zen_20196"

# Dossier de travail en local
fichier_capture="/media/sdb1/scripts/fichier_capture.txt"
dossier_capture="/media/sdb1/scripts/dossier_capture"
page_principale="/media/sdb1/scripts/dossier_capture/index.php"
liste_css="/media/sdb1/scripts/dossier_capture/liste_css.txt"
liste_css_light="/media/sdb1/scripts/dossier_capture/liste_css_light.txt"

# Execution
# Recupere la page HTML a traiter en local
wget $page_html -O$page_principale

# Recupere la liste des fichiers css depuis le code HTML de la page index.php
cat $page_principale|grep stylesheet>$liste_css

# Simplifie le fichier css télechargé
sed -i 's/media="print" //' $liste_css
sed -i 's/<link rel="stylesheet" type="text\/css\" href="//' $liste_css
sed -i 's/.css" \/>/.css/' $liste_css

# Copie le fichier css
cp $liste_css $liste_css_light

# On allege encore le fichier css light en virant /includes/templates
sed -i 's/includes\/templates\///' $liste_css_light

# Recupere et separe la structure des dossiers /includes/templates/theme/css/Nom de fichier
for ligne_css in `cat $liste_css`; do
includes_path=$(echo $ligne_css | cut -d'/' -f1) # Dossier includes
templates_path=$(echo $ligne_css | cut -d'/' -f2) # Dossier templates
theme_path=$(echo $ligne_css | cut -d'/' -f3) # Dossier theme
css_path=$(echo $ligne_css | cut -d'/' -f4) # Dossier css
nom_de_fichier_css=$(echo $ligne_css | cut -d'/' -f5) # Nom de fichier

# Creer les dossiers a recevoir en local
mkdir $dossier_capture/$includes_path
mkdir $dossier_capture/$includes_path/$templates_path
mkdir $dossier_capture/$includes_path/$templates_path/$theme_path
mkdir $dossier_capture/$includes_path/$templates_path/$theme_path/$css_path
mkdir $dossier_capture/$includes_path/$templates_path/$theme_path/images

# Recupere les fichiers css 1 par 1
wget $racine_site/$ligne_css -O$dossier_capture/$ligne_css

# Liste les repertoires images contenus dans le fichier css
liste_des_images_url=$(cat $dossier_capture/$ligne_css|grep images)

# Recupere les images depuis les fichiers css trouves
for images_trouvees in $liste_des_images_url; do
sed -n 's/.*(\(.*\)).*/\1/p' $images_trouvees
echo $images_trouvees # c'est ici que logiquement on doit voir ../images/bg.gif ../images/toto.jpg etc...
done

done



Si quelqu'un a une idée. Je suis en galère sur le SED final. Il me reste pas grand chose pour le terminer... Merci à tous.

sed... La vérité est ailleurs ;-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
14 mars 2009 à 09:20
        # Recupere les images depuis les fichiers css trouves
          for images_trouvees in $liste_des_images_url; do
            sed -n 's/.*(\(.*\)).*/\1/p' <<<$images_trouvees >> les_images
            cat les_images
          done
      
    done
Par contre, merci à l'avenir d'enlever le nom de ta boîte dans ta signature. Voir Neutralité commerciale et culturelle dans la charte de CCM
0
Utilisateur anonyme
24 mars 2009 à 15:48
Merci ça fonctionne à merveille !
0