Remplacer une ligne par une autre selon mots
chris
-
chris -
chris -
Bonjour,
je cherche à remplacer une ligne par une autre dans toute une arborescence.
Je m'explique: si mon fichier contient "titi" et "toto" sur la même ligne, alors je veux supprimer cette ligne et la remplacer par une autre (contenant plusieurs mots clés).
J'ai trouvé pas mal d'infos pour remplacer une chaine de caractères par une autre, mais ça ne marche pas avec mon besoin, j'ai parfois plus d'espace, des virgules, la seule constance, c'est "titi" et "toto", merci pour votre aide !
je cherche à remplacer une ligne par une autre dans toute une arborescence.
Je m'explique: si mon fichier contient "titi" et "toto" sur la même ligne, alors je veux supprimer cette ligne et la remplacer par une autre (contenant plusieurs mots clés).
J'ai trouvé pas mal d'infos pour remplacer une chaine de caractères par une autre, mais ça ne marche pas avec mon besoin, j'ai parfois plus d'espace, des virgules, la seule constance, c'est "titi" et "toto", merci pour votre aide !
A voir également:
- Remplacer une ligne par une autre selon mots
- Remplacer disque dur par ssd - Guide
- Remplacer un mot par un autre word - Guide
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne dans une cellule excel - Guide
15 réponses
OK, alors voilà:
j'ai cette ligne :
Conception & Réalisation <a href="http://www.cortix.fr" target="_blank" class="copyright">societe</a>, Web agency -2007<br>
ou parfois cette ligne:
Conception et réalisation <a href="http://www.cortix.fr" target="_b lank" class="liens">societe</a> 2008, web agency
Bref, je veux virer les lignes contenant "conception" et "societe", et j'ai pas mal de variantes (l'année, des espaces, des virgules etc...) et les remplacer par un code (une image, en fait)
j'ai cette ligne :
Conception & Réalisation <a href="http://www.cortix.fr" target="_blank" class="copyright">societe</a>, Web agency -2007<br>
ou parfois cette ligne:
Conception et réalisation <a href="http://www.cortix.fr" target="_b lank" class="liens">societe</a> 2008, web agency
Bref, je veux virer les lignes contenant "conception" et "societe", et j'ai pas mal de variantes (l'année, des espaces, des virgules etc...) et les remplacer par un code (une image, en fait)
jp@MDK:~/tmpfs ssh$ cat fichier.txt Conception & Réalisation <a href="http://www.cortix.fr" target="_blank" class="copyright">societe</a>, Web agency -2007<br> ou parfois cette ligne: Conception et réalisation <a href="http://www.cortix.fr" target="_b lank" class="liens">societe</a> 2008, web agency Contraception & Réalisation <a href="http://www.cortix.fr" target="_blank" class="copyright">societe</a>, Web agency -2007<br> ou parfois cette ligne: Conception et réalisation <a href="http://www.cortix.fr" target="_b lank" class="liens">entreprise</a> 2008, web agency jp@MDK:~/tmpfs ssh$ sed '/Conception.*societe/ s#.*#IMAGE#' fichier.txt IMAGE ou parfois cette ligne: IMAGE Contraception & Réalisation <a href="http://www.cortix.fr" target="_blank" class="copyright">societe</a>, Web agency -2007<br> ou parfois cette ligne: Conception et réalisation <a href="http://www.cortix.fr" target="_b lank" class="liens">entreprise</a> 2008, web agency jp@MDK:~/tmpfs ssh$;-))
En fait ma ligne ne commence pas forcement par "Conception", elle contient ce mot à coup sur, ainsi que le mot "societe", mais j'ai parfois:
<td height="35" align="center" valign="middle" class="texte">Conception et réalisation <a href="http://www.cortix.fr" target="_blank" class="orange">societe</a> 2008, web agency</td>
ou parfois:
<p><span class="liens_accueil"><a href="index.htm" class="liens_accueil">Accueil</a> I <a href="presentation.htm" class="liens_accueil">Présentation</a> I <a href="realisations.htm" class="liens_accueil">Réalisations</a> I <a href="contact.php" class="liens_accueil">Contact</a> - <a href="http://www.cortix.fr" target="_blank" class="liens_accueil">Conception et réalisation societe 2008, web agency</a></span></p>
Je veux virer toutes ces lignes (et donc pas mal de repertoires à parser), et remplacer tous ces contenus pas une image dont le code peut être dans un fichier.
<td height="35" align="center" valign="middle" class="texte">Conception et réalisation <a href="http://www.cortix.fr" target="_blank" class="orange">societe</a> 2008, web agency</td>
ou parfois:
<p><span class="liens_accueil"><a href="index.htm" class="liens_accueil">Accueil</a> I <a href="presentation.htm" class="liens_accueil">Présentation</a> I <a href="realisations.htm" class="liens_accueil">Réalisations</a> I <a href="contact.php" class="liens_accueil">Contact</a> - <a href="http://www.cortix.fr" target="_blank" class="liens_accueil">Conception et réalisation societe 2008, web agency</a></span></p>
Je veux virer toutes ces lignes (et donc pas mal de repertoires à parser), et remplacer tous ces contenus pas une image dont le code peut être dans un fichier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui oui, toujours avant, mais la commande
sed '/Conception.*societe/ s#.*#TOTO# la-societe.htm
ne me retourne rien ?
sed '/Conception.*societe/ s#.*#TOTO# la-societe.htm
ne me retourne rien ?
Ben c'est bizarre ;-\
Au passage il manque une quote simple dans ta syntaxe (faute de frappe ?) après le dernier dièse...
Au passage il manque une quote simple dans ta syntaxe (faute de frappe ?) après le dernier dièse...
jp@MDK:~/tmpfs ssh$ cat new_fich En fait ma ligne ne commence pas forcement par "Conception", elle contient ce mot à coup sur, ainsi que le mot "societe", mais j'ai parfois: <td height="35" align="center" valign="middle" class="texte">Conception et réalisation <a href="http://www.cortix.fr" target="_blank" class="orange">societe</a> 2008, web agency</td> ou parfois: <p><span class="liens_accueil"><a href="index.htm" class="liens_accueil">Accueil</a> I <a href="presentation.htm" class="liens_accueil">Présentation</a> I <a href="realisations.htm" class="liens_accueil">Réalisations</a> I <a href="contact.php" class="liens_accueil">Contact</a> - <a href="http://www.cortix.fr" target="_blank" class="liens_accueil">Conception et réalisation societe 2008, web agency</a></span></p> Je veux virer toutes ces lignes (et donc pas mal de repertoires à parser), et remplacer tous ces contenus pas une image dont le code peut être dans un fichier. jp@MDK:~/tmpfs ssh$ sed '/Conception.*societe/ s#.*#IMAGE#' new_fich IMAGE IMAGE ou parfois: IMAGE Je veux virer toutes ces lignes (et donc pas mal de repertoires à parser), et remplacer tous ces contenus pas une image dont le code peut être dans un fichier. jp@MDK:~/tmpfs ssh$Chez moi ça marche ;-)
oui désolé en fait ça fonctionne, je n'avais pas fais gaffe que le fichier n'était pas modifié ;o)
Par contre ma syntaxe est un peu + "remplie" que IMAGE, mon texte à remplacer est:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=8,0,0,0" width="80" height="16"><param name="allowScriptAccess" value="sameDomain" \/><param name="movie" value="button.swf" \/><param name="quality" value="high" \/><param name="wmode" value="transparent" \/><param name="bgcolor" value="#ffffff" \/><embed src="button.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="80" height="16" allowScriptAccess="sameDomain"type="application\/x-shockwave-flash"pluginspage="http:\/\/www.macromedia.com\/go\/getflashplayer" \/><\/object>
Du coup j'ai un joli message retour
sed: -e expression n°1, caractère 174: option inconnue pour `s'
En tout cas on approche du but, je le sens !
Par contre ma syntaxe est un peu + "remplie" que IMAGE, mon texte à remplacer est:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=8,0,0,0" width="80" height="16"><param name="allowScriptAccess" value="sameDomain" \/><param name="movie" value="button.swf" \/><param name="quality" value="high" \/><param name="wmode" value="transparent" \/><param name="bgcolor" value="#ffffff" \/><embed src="button.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="80" height="16" allowScriptAccess="sameDomain"type="application\/x-shockwave-flash"pluginspage="http:\/\/www.macromedia.com\/go\/getflashplayer" \/><\/object>
Du coup j'ai un joli message retour
sed: -e expression n°1, caractère 174: option inconnue pour `s'
En tout cas on approche du but, je le sens !
C'est bon, en fait j'avais des dieses qui trainaient au milieu de mon texte à modifier, tout est OK, merci beaucoup, il ne me reste plus qu'à enregistrer la modification
Derniere petite question, je fais une boucle pour parser tous mes repertoires , mais certains fichiers ont un espace dans leur nom, ce qui fait que mon script se bloque, une solution ?
Voila le script:
#!/bin/sh
BASEDIR=/datas/clients
cd $BASEDIR
for i in `ls`; do
cd $BASEDIR/$i
for z in `ls`; do
FICHTEMP=$BASEDIR/$i/fichtemp
sed '/Conception.*societe/ s#.*#<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http://fpdownload2.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\#version=8,0,0,0" width="80" height="16"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="button.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="\#ffffff" /><embed src="button.swf" quality="high" wmode="transparent" bgcolor="\#ffffff" width="80" height="16" allowScriptAccess="sameDomain"type="application/x-shockwave-flash"pluginspage="https://get.adobe.com/flashplayer/" /></object>#' $z > $FICHTEMP
cp $FICHTEMP $z
done
done
Voila le script:
#!/bin/sh
BASEDIR=/datas/clients
cd $BASEDIR
for i in `ls`; do
cd $BASEDIR/$i
for z in `ls`; do
FICHTEMP=$BASEDIR/$i/fichtemp
sed '/Conception.*societe/ s#.*#<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"codebase="http://fpdownload2.macromedia.com/pub/shockwave/cabs/flash/swflash.cab\#version=8,0,0,0" width="80" height="16"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="button.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="\#ffffff" /><embed src="button.swf" quality="high" wmode="transparent" bgcolor="\#ffffff" width="80" height="16" allowScriptAccess="sameDomain"type="application/x-shockwave-flash"pluginspage="https://get.adobe.com/flashplayer/" /></object>#' $z > $FICHTEMP
cp $FICHTEMP $z
done
done
Rebonjour,
la commande fonctionne dans 98% des cas, mais j'ai quelques fichiers récalcitrants (surtout des lignes) pour lesquelles la commande ne passe pas, voici un exemple de ligne qui passe au travers:
ma commande:
sed '/Conception.*Societe/ s#.*#TOTO#' default.htm
la ligne qui passe au travers:
<td width="422" height="30" valign="middle" class="copyright"><a href="http://www.cortix.fr" target="_blank">Conception & réalisation Societe, Web Agency, 2007 </a></td>
Ca vient de quoi ? les guillemets ?les dble quotte ?
Merci !
la commande fonctionne dans 98% des cas, mais j'ai quelques fichiers récalcitrants (surtout des lignes) pour lesquelles la commande ne passe pas, voici un exemple de ligne qui passe au travers:
ma commande:
sed '/Conception.*Societe/ s#.*#TOTO#' default.htm
la ligne qui passe au travers:
<td width="422" height="30" valign="middle" class="copyright"><a href="http://www.cortix.fr" target="_blank">Conception & réalisation Societe, Web Agency, 2007 </a></td>
Ca vient de quoi ? les guillemets ?les dble quotte ?
Merci !
en fait si je ne prends que cette ligne en effet ca marche, mais la ligne du dessus me pose problème, voila les 2 lignes qui me posent problème:
<td dth="425" height="30" align="left" valign="middle" class="copyright"><a href="https://get.adobe.com/flashplayer/" target="_blank"><img src="gfx/dlflash.jpg" width="250" height="30" border="0"></a></td>
width="422" height="30" valign="middle" class="copyright"><a href="http://www.cortix.fr" target="_blank">Conception & réisation Societe, Web Agency, 2007 </a></td>
<td dth="425" height="30" align="left" valign="middle" class="copyright"><a href="https://get.adobe.com/flashplayer/" target="_blank"><img src="gfx/dlflash.jpg" width="250" height="30" border="0"></a></td>
width="422" height="30" valign="middle" class="copyright"><a href="http://www.cortix.fr" target="_blank">Conception & réisation Societe, Web Agency, 2007 </a></td>
En fait pour moi la seule qui passe au travers c'est celle-là :
<td dth="425" height="30" align="left" valign="middle" class="copyright"><a href="https://www.adobe.com/" target="_blank"><img src="gfx/dlflash.jpg" width="250" height="30" border="0"></a></td>
Mais c'est normal, il n'y a aucun motif qui corresponde... :-))
<td dth="425" height="30" align="left" valign="middle" class="copyright"><a href="https://www.adobe.com/" target="_blank"><img src="gfx/dlflash.jpg" width="250" height="30" border="0"></a></td>
Mais c'est normal, il n'y a aucun motif qui corresponde... :-))