Georges Lours a écrit :
Le lundi 12 février 2007, olivier-serveur a écrit :
(...)

ca veux dire quoi conserver ?
les sauts de lignes viennent de ton : echo $keywords
il faut mettre : echo -n $keywords
pour supprimer le saut de ligne (et enlever le tr '\n' qui ne servira
plus a rien)


En fait echo -n $keywords m'affiche bien la chaîne sans les sauts de lignes, mais ne les remplace pas par des espaces et je n'ai plus qu'un seul mot (si on ne tient pas compte des virgules dans ce cas précis)
en fait, après

for keywords in $(grep -m "1" '<meta name=\"keywords\" content=\".*\">' "$fichier"); do....

echo $keywords m'affiche tous les mots de la ligne sur plusieurs lignes (une ligne pas mot)

echo -n $keywords m'affiche tous les mots sur la même ligne, mais sans espace entre chaque
echo -n "$keywords "
(ajout d'un espace en fin avant les ")


echo $keywords | tr -d '"'| tr '\n' ' '
affiche presque ce que je veux, c'est à dire
<meta name=keywords content=cours de droit, cours de biologie, cours de... >
Je voudrais stocker ces chaînes de caractères dans une variable qu'on peut appeler $variable pour que je puisse ensuite supprimer les caractères du début (<meta name=keywords content=) et ceux de la fin (">) Ensuite, il me restera plus qu'à envoyer $variable modifié vers ma base de données


Si "conserver" veut dire recupere la valeur, alors changer :
echo $keywords | tr -d '"'| tr '\n' ' '
en :
$vs=`echo -n $keywords | tr -d '"'`
ou pour cumuler :
$vs=`echo -n "$vs $keywords" | tr -d '"'`
(pas testé)


Non, malheureusement, ça ne va pas !
$vs=`echo -n $keywords | tr -d '"'`
echo $vs
m'affiche <mon_script_bash>: line 8: =<meta: command not found
<mon_script_bash>: line 8:=name=keywords: command not found
<mon_script_bash>: line 8:=content=cours: command not found
<mon_script_bash>: line 8:=de: command not found
<mon_script_bash>: line 8:=droit,: command not found
erreur de ma part, il fallait lire :
vs=`echo -n $keywords | tr -d '"'`
(pas de $ en debut sinon tantative d'interpretation, j'avais dit : pas testé)

$vs=`echo -n "$vs $keywords" | tr -d '"'`
echo $vs
m'affiche
<mon_script_bash>: line 8: =: command not found
autant de fois qu'il y a de mots
cf plus haut, desole.

(...)


et si tu fais :
debut=`grep -n "<body>" $fichier |awk '{print $1}'`
($fichier est bien definit ?)


$debut et $fin ne sont pas affiché et j'ai l'erreur
sed: -e expression n°1, caractère 1: commande inconnue: `,'

pas de 'for' pour sed, il extrait les lignes tout seul :
sed -n $debut,$fin\p $fichier >$fichier_resultat

A tout hasard, verifie en lancant cette ligne sur une console (en
forcant les bonnes valeurs) :
sed -n 10,20\p le_nom_du_fichier
ca devrais t'afficher uniquement les lignes 10 a 20.


Je n'ai pas eu le temps d'essayer.
Le devoir m'appelle, je réessayerai mercredi.
a mercredi.
=========================================
Vous souhaitez acquerir votre pack ou des services Mandriva?
Rendez-vous sur "http://store.mandriva.com";.
Rejoignez le club Mandriva : http://club.mandriva.com
=========================================

Répondre à