Script shell
Résolu
TomTom
-
TomTom -
TomTom -
Bonjour,
Je cherche à faire un programme en script shell. Ce programme a pour but de faire du traitement de fichiers. Par exemple, j'ai un fichier fichier1 qui contient un mot par ligne. J'ai un second fichier, fichier2, qui contient un texte. Je voudrais que mon programme parse fichier1 et qu'il remplace les mots de ce fichier dans fichier2.
Pour l'instant, j'ai le code suiant :
je remplace les mots du fichier1 par xxxx dans le fichier 2.
Quand je lance mon programme, j'obtiens une erreur suivante :
[: 11: Illegal number: mot1
[: 11: Illegal number: mot2
[: 11: Illegal number: mot3
[: 11: Illegal number: mot4
Je vous remercie par avance pour toutes vos aides que vous pourrez m'apporter
Je cherche à faire un programme en script shell. Ce programme a pour but de faire du traitement de fichiers. Par exemple, j'ai un fichier fichier1 qui contient un mot par ligne. J'ai un second fichier, fichier2, qui contient un texte. Je voudrais que mon programme parse fichier1 et qu'il remplace les mots de ce fichier dans fichier2.
Pour l'instant, j'ai le code suiant :
#!/bin/sh while read ligne do set -- $ligne if [ $1 -eq '/^ *$ ]; then $censure=$1; sed 's/$interdit/xxxx/g' fichier2 fi done < fichier1
je remplace les mots du fichier1 par xxxx dans le fichier 2.
Quand je lance mon programme, j'obtiens une erreur suivante :
[: 11: Illegal number: mot1
[: 11: Illegal number: mot2
[: 11: Illegal number: mot3
[: 11: Illegal number: mot4
Je vous remercie par avance pour toutes vos aides que vous pourrez m'apporter
A voir également:
- Script shell
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
5 réponses
[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]$;-))
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.
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