Script shell
Résolu/Fermé
A voir également:
- Script shell
- Script vidéo youtube - Guide
- Classic shell windows 10 français - Télécharger - Personnalisation
- Script bat - Guide
- Lancer script python linux - Forum Ubuntu
- Executeur de script - Télécharger - Édition & Programmation
5 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 895
29 oct. 2008 à 21:18
29 oct. 2008 à 21:18
[rep]$ cat fichier1 manger boire dormir [rep]$ cat fichier2 Pour pouvoir être en bonne santé, il faut manger équilibré et boire une bouteille d'un litre et demi par jour. Il faut également avoir un sommeil profond. Donc pour bien dormir, un matelas de qualité est nécessaire. [rep]$ while read line;do sed -i "s/$line/xxx/" fichier2;done < fichier1 [rep]$ cat fichier2 Pour pouvoir être en bonne santé, il faut xxx équilibré et xxx une bouteille d'un litre et demi par jour. Il faut également avoir un sommeil profond. Donc pour bien xxx, un matelas de qualité est nécessaire. [rep]$;-))
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
29 oct. 2008 à 18:29
29 oct. 2008 à 18:29
Bonjour, tu fais quelques erreurs assez graves :
– sur la ligne if, tu n’as pas d’apostrophe fermante
– une variable s’initialise en faisant censure="$1" et pas $censure=$1, ce qui produirait des erreurs
– dans la ligne contenant la commande sed, puisque entre apostrophes simples, ta variable « interdit » ne sera pas remplacée, il faut utiliser des « " »
d’autre part, si tu veux remplacer, avec sed, utilise l’option -i, qui fera une écriture dans le fichier. (Fais une copie de sauvegarde en début de script)
Encadre TOUJOURS tes variables avec des guillemets doubles lorsque tu les références avec le $, sauf si tu as une bonne raison de ne pas le faire, ça t’évitera beaucoup de bogues inattendus lorsque tes variables contiendront des espaces.
– sur la ligne if, tu n’as pas d’apostrophe fermante
– une variable s’initialise en faisant censure="$1" et pas $censure=$1, ce qui produirait des erreurs
– dans la ligne contenant la commande sed, puisque entre apostrophes simples, ta variable « interdit » ne sera pas remplacée, il faut utiliser des « " »
d’autre part, si tu veux remplacer, avec sed, utilise l’option -i, qui fera une écriture dans le fichier. (Fais une copie de sauvegarde en début de script)
Encadre TOUJOURS tes variables avec des guillemets doubles lorsque tu les références avec le $, sauf si tu as une bonne raison de ne pas le faire, ça t’évitera beaucoup de bogues inattendus lorsque tes variables contiendront des espaces.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
>
TomTom
29 oct. 2008 à 20:03
29 oct. 2008 à 20:03
Salut,
Déjà re-poste ton script avec les modifications.
Ensuite, donnes nous le contenu (ou partie) de fichier1, ainsi que le contenu de fichier2.
Si possible, donne un aperçu de fichier2 avant => après.
Pour finir, tu définis une variable ($censure), ) quoi sert-elle ? Tu te sers aussi de la variable "$interdit", mais où est-elle définie ?
Déjà re-poste ton script avec les modifications.
Ensuite, donnes nous le contenu (ou partie) de fichier1, ainsi que le contenu de fichier2.
Si possible, donne un aperçu de fichier2 avant => après.
Pour finir, tu définis une variable ($censure), ) quoi sert-elle ? Tu te sers aussi de la variable "$interdit", mais où est-elle définie ?
#!/bin/sh while read ligne do set -- $ligne if [ $1 -eq '/^ *$' ] then interdit="$1"; sed"s/$interdit/xxxx/g" fichier2 fi done < fichier1
fichier 1 :
manger boire dormir
fichier2 :
Pour pouvoir être en bonne santé, il faut manger équilibré et boire une bouteille d'un litre et demi par jour. Il faut également avoir un sommeil profond. Donc pour bien dormir, un matelas de qualité est nécessaire.
Les fichiers 1 et 2 sont des exemples. Au final, je souhaiterais récupérer fichier2 dans la forme qui suit :
Pour pouvoir être en bonne santé, il faut xxxx équilibré et xxxx une bouteille d'un litre et demi par jour. Il faut également avoir un sommeil profond. Donc pour bien xxxx, un matelas de qualité est nécessaire.
Encore merci de m'aider et de me consacrer du temps.
cat ? je ne connais pas ^^ je suis vraiment débutant de chez débutant.... j'essaie ca tout de suite et merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question