Petit script sur un texte
keta
-
jipicy Messages postés 41342 Statut Modérateur -
jipicy Messages postés 41342 Statut Modérateur -
bonjour,
j'ai un pb pour ecrire un petit script en shell bash , je débute
il consiste en 2 arguments , le premier est une ligne du texte, le 2 em le nouveau fichier crée; le script doit prendre le premier argument et le mettre tout en haut du fichier du 2 em argument ;
j'ai fait ceci
#! bin/bash
head -$1>>$2
ligne 1 >>$2
ligne2 >>$2
mais il plante avec une erreur head ;
j'ai un pb pour ecrire un petit script en shell bash , je débute
il consiste en 2 arguments , le premier est une ligne du texte, le 2 em le nouveau fichier crée; le script doit prendre le premier argument et le mettre tout en haut du fichier du 2 em argument ;
j'ai fait ceci
#! bin/bash
head -$1>>$2
ligne 1 >>$2
ligne2 >>$2
mais il plante avec une erreur head ;
A voir également:
- Petit script sur un texte
- Script vidéo youtube - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
- Comment justifier un texte sur word ✓ - Forum Word
8 réponses
Salut,
Faudrait déjà lui indiquer le fichier d'entrée non ? Du style :
Montres-nous à quoi ressemble ton fichier d'entrée et à quoi doit ressembler ton fichier de sortie ($2).
;-))
Faudrait déjà lui indiquer le fichier d'entrée non ? Du style :
head -$1 fichier_entréee >> $2Et puis à quoi corresponde les "ligne 1" "et ligne 2" ?
Montres-nous à quoi ressemble ton fichier d'entrée et à quoi doit ressembler ton fichier de sortie ($2).
;-))
oui c'est le problème ; à la base j'ai un fichier qui comprend
x lignes
ligne 1
ligne 2
ligne ..n
et avec un nouveau script j'ai mes 2 arguments ; le premier place la nouvelle ligne en haut du nouveau fichier (argument 2)
x lignes
ligne 1
ligne 2
ligne ..n
et avec un nouveau script j'ai mes 2 arguments ; le premier place la nouvelle ligne en haut du nouveau fichier (argument 2)
Bonsoir,
si j'ai bien suvi tu veux un script tel que:
toto.sh "ma ligne de texte" monfichier.qqc
et tu dois retrouver en ligne 1 de monfichier.qqc la phrase "ma ligne de texte" puis des phrases qui viennent de ton script shell?
si c'est oui, voilà un script shell qui fait celà:
les {} c'est pour protéger les variables, c'est à ma connaissance une bonne habitude à prendre pour eviter des effets de bords ...
si j'ai bien suvi tu veux un script tel que:
toto.sh "ma ligne de texte" monfichier.qqc
et tu dois retrouver en ligne 1 de monfichier.qqc la phrase "ma ligne de texte" puis des phrases qui viennent de ton script shell?
si c'est oui, voilà un script shell qui fait celà:
les {} c'est pour protéger les variables, c'est à ma connaissance une bonne habitude à prendre pour eviter des effets de bords ...
#!/bin/bash
echo ${1} > ${2}
echo "phrase 2" >> ${2}
echo "phrase 3" >> ${2}
echo "phrase 4" >> ${2}
echo "..." >> ${2}
echo "phrase n" >> ${2}
Salut,
si j'ai bien suivi tu veux un script tel que...
Il est bien là le problème, car moi j'ai pas du tout compris ça et c'est bien pourquoi je demandais des exemples précis, comme un bout du fichier d'entrée, un énoncé plus clair de ce que veut notre ami et un bout de son fichier de sortie tel qu'il doit être ...
;-))
si j'ai bien suivi tu veux un script tel que...
Il est bien là le problème, car moi j'ai pas du tout compris ça et c'est bien pourquoi je demandais des exemples précis, comme un bout du fichier d'entrée, un énoncé plus clair de ce que veut notre ami et un bout de son fichier de sortie tel qu'il doit être ...
;-))
moui je sais, j'ai relu bien 3 ou 4 fois en decortiquant.
J'ai proposé une solution par rapport à ce que j'ai compris... c'est pas toujours facile d'expliquer correctement un problème et ces objectifs quand on découvre un nouvelle univers ... (moi c'est les vlans en ce moment .... )
Maintenant si ce n'est pas ça, on fera un V1.1 :)
J'ai proposé une solution par rapport à ce que j'ai compris... c'est pas toujours facile d'expliquer correctement un problème et ces objectifs quand on découvre un nouvelle univers ... (moi c'est les vlans en ce moment .... )
Maintenant si ce n'est pas ça, on fera un V1.1 :)
moui je sais, j'ai relu bien 3 ou 4 fois en decortiquant.
Ben je dois en être à 10 ou 15 fois ;-((
J'ai proposé une solution par rapport à ce que j'ai compris...
Et je t'en remercie d'ailleurs
c'est pas toujours facile d'expliquer correctement un problème et ces objectifs quand on découvre un nouvelle univers ... (moi c'est les vlans en ce moment .... )
D'où la demande de copier/coller des fichiers (entrée/sortie)
Maintenant si ce n'est pas ça, on fera un V1.1 :)
;-DDD
Ben je dois en être à 10 ou 15 fois ;-((
J'ai proposé une solution par rapport à ce que j'ai compris...
Et je t'en remercie d'ailleurs
c'est pas toujours facile d'expliquer correctement un problème et ces objectifs quand on découvre un nouvelle univers ... (moi c'est les vlans en ce moment .... )
D'où la demande de copier/coller des fichiers (entrée/sortie)
Maintenant si ce n'est pas ça, on fera un V1.1 :)
;-DDD
Il est clair que l'énoncé ne l'est pas du tout :D
Il faudrait soit l'énoncé exact (mot pour mot) sois des exemple concrets...
Moi je le comprend comme cela (enfin ça me parait être un exercice intéressant...)
Ajouter l'argument 1 en début du fichier passé en argument 2...
Ce qui pourrait se résoudre avec le script suivant:
++
Il faudrait soit l'énoncé exact (mot pour mot) sois des exemple concrets...
Moi je le comprend comme cela (enfin ça me parait être un exercice intéressant...)
Ajouter l'argument 1 en début du fichier passé en argument 2...
Ce qui pourrait se résoudre avec le script suivant:
#/bin/sh LINE=$1 FILE=$2 sed -i -e "1i\ $LINE " $FILEExemple:
PBG4:~/Work/temp adrien$ cat test.txt ligne 1 ligne 2 ligne 3 ligne 4 ... ligne n PBG4:~/Work/temp adrien$ ./ajoutL1.sh "ligne 0" test.txt PBG4:~/Work/temp adrien$ cat test.txt ligne 0 ligne 1 ligne 2 ligne 3 ligne 4 ... ligne n PBG4:~/Work/temp adrien$Si c'est l'effet attendu, on peut te donner des détails sur la commande utilisée :)
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonsoir , désolé pour mon explication et merci pour vos réponses ;
oui en entrée je veux ceci avec les 2 arguments :
monscript.sh (ligne à placer en haut du nouveau fichier)( nouveau fichier)
monscript contient les lignes
ligne 1
ligne2
etc...
et en sortie je veux donc : cat nouveaufichier
ligne à placer en haut du nouveau fichier
ligne1
ligne2
etc..
j'ai un problème avec la commande head .
oui en entrée je veux ceci avec les 2 arguments :
monscript.sh (ligne à placer en haut du nouveau fichier)( nouveau fichier)
monscript contient les lignes
ligne 1
ligne2
etc...
et en sortie je veux donc : cat nouveaufichier
ligne à placer en haut du nouveau fichier
ligne1
ligne2
etc..
j'ai un problème avec la commande head .
Bonche, du coup, je ne trouve pas ça logique comme exercice mais admettons.
Est-ce que les réponses de pocondeta_13 en 3 ou lami20j en 9 résolvent ton problème, oubien est-ce que tu dois avoir en resultat l'argument 1 suivi du contenu du script, c'est a dire:
Est-ce que les réponses de pocondeta_13 en 3 ou lami20j en 9 résolvent ton problème, oubien est-ce que tu dois avoir en resultat l'argument 1 suivi du contenu du script, c'est a dire:
paramètre_1 ligne 1 ligne 2 ...ou
paramètre_1 echo paramètre_1 > paramètre_2 echo ligne 1 >> paramètre_2 echo ligne 2 >> paramètre_2 ...?
Salut,
Moi je comprends qu'il s'agit de la création d'un nouveau fichier dont le 1er argument sera la 1ère ligne et le reste des lignes sont codées en dur dans le script
Moi je comprends qu'il s'agit de la création d'un nouveau fichier dont le 1er argument sera la 1ère ligne et le reste des lignes sont codées en dur dans le script
$ cat ccm.sh #!/bin/bash echo $1 >> $2 echo ligne1 >> $2 echo ligne2 >> $2 $ sh ccm.sh "ligne à placer en haut du nouveau fichier" resultat.txt $ cat resultat.txt ligne à placer en haut du nouveau fichier ligne1 ligne2
désolé de m être mal expliqué , on doit utiliser la commande head pour cet exo : on a un fichier (newfile) qui contient x lignes
line1
line2
line3
on doit écrire un script qui prend comme premier argument la nouvelle ligne à mettre en haut du fichier crée ci dessus (newfile), newfile sera le 2 èm argument qui affichera après lexecution du script :
nouvelle ligne
line1
line2
line3
jai essayé comme ceci mais jai une erreur head
head -$1 newfile >>$2
line1
line2
line3
on doit écrire un script qui prend comme premier argument la nouvelle ligne à mettre en haut du fichier crée ci dessus (newfile), newfile sera le 2 èm argument qui affichera après lexecution du script :
nouvelle ligne
line1
line2
line3
jai essayé comme ceci mais jai une erreur head
head -$1 newfile >>$2
Salut,
Je ne vois pas pourquoi tu t'obstines avec la commande "head", qui ne sert qu'à afficher "n" ligne(s) du début d'un fichier.
Tiens voilà une autre façon de faire :
;-))
Je ne vois pas pourquoi tu t'obstines avec la commande "head", qui ne sert qu'à afficher "n" ligne(s) du début d'un fichier.
Tiens voilà une autre façon de faire :
#! /bin/bash if [ "$#" -gt 2 ]; then echo -e "trop de paramètres ! " echo -e "Usage :\t$0 \"phrase entre guillemets\" fichier" exit 3 fi fichier=$(cat $2) echo "$1" > "$2" echo "$fichier" >> "$2" cat "$2" exitLa meilleure solution restant quand même celle d'asevere (post #7) utilisant la commande "sed" qui se prète tout a fait à ce genre d'exercice.
;-))