Georges Lours a écrit :
Le lundi 12 février 2007, olivier-serveur a écrit :
(...)
D'abord, avant de continuer, est-ce que le bash est une bonne idée ?
Avez-vous d'autres propositions ?
s'il y a peu de lignes a ecrire, c'est une bonne idée.
Ben la partie "contenu" peut être assez importante : le fichier qui me sert de
test comporte 10.000 caractères
je parlais de ligne de code bash, pas des fichiers que tu veux traiter.
(...)
1) J'aimerais bien enlever le début de cette ligne
<meta name="keywords" content="
J'arrive à enlever <meta name= en faisant ainsi
keywords=${keywords#<meta name=}
Mais, les guillemets qui suivent me posent des problèmes que je n'arrive
pas à surmonter (pour le moment)
tr -d '"' permet de supprimer tous les "
Oui, merci :)
J'arrive à ceci
for keywords in $(grep -m "1" '<meta name=\"keywords\"
content=\".*\">' "$fichier"); do
echo $keywords | tr -d '"'| tr '\n' ' '
done
Mais je n'arrive pas à conserver la variable keywords avec sa nouvelle valeur
(sans les sauts de lignes ni les guillemets
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)
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é)
2) J'aimerais bien obtenir un affichage sur une seule ligne et non ligne
par ligne
modif de ta ligne ou de meme : tr -d '\n'
3) J'aimerais bien pouvoir extraire le contenu de la page, par exemple ce
qui se trouve entre les balises <body> et </body>, mais, là, il y a
plusieurs lignes. Je ne sais pas extraire plusieurs lignes. Et je
voudrais également que le résultat soit entièrement réuni sur une seule
ligne.
Y-a-t-il une façon, par exemple avec kwrite, de supprimer tous les sauts
de lignes dans un extrait de fichier texte ?
avec grep, on recupere le numero de ligne :
grep -n <body> de meme pour </body>
avec sed, on extrait les lignes en question :
sed -n 1,5\p <fichier.php> (si body en ligne 1 et /body en ligne 5)
Alors, là, je n'ai pas dû comprendre.
Voilà ce que j'ai tenté : ça ne marche pas !
debut=$(grep -n '<body>' "$fichier")
fin=$(grep -n '</body>' "$fichier")
echo $debut
echo $fin
for contenu in $(sed -n $debut,$fin\p "$fichier"); do
echo $contenu | tr '\n' ' '
done
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.
=========================================
Vous souhaitez acquerir votre pack ou des services Mandriva?
Rendez-vous sur "http://store.mandriva.com".
Rejoignez le club Mandriva : http://club.mandriva.com
=========================================