Bonsoir
je suis nouveaux dans le forum et j’aimerais resoudre un petit probleme concernant cet enonce
« Créer deux fichier f1.txt ayant comme contenu « Bonjour les amis » et f2.txt ayant comme contenu « du cours SE2 ». Écrire un script fusion.sh qui reçoit ces deux fichiers et qui va créer un troisième fichier f3.txt ayant comme contenu la fusion des deux premiers fichiers. Le contenu de f3.txt sera alors « Bonjour les amis du cours SE2 ». Le script affichera après le contenu du fichier f3.txt. Exécuter votre script. »
j’ai obtenu ce résultat
mais il y a un espace entre les deux fichiers.
Bonjour,
Comme il est souvent dit en informatique RTFM.
Parfois c’est plus ou moins complexe selon la longueur du manuel et la langue utilisée.
Le man de la commande « paste » ne fait que quelques lignes.
$ paste -d " " f1.txt f2.txt > f3.txt
Bonjour,
Sauf que l’outil le plus approprié n’est pas paste
mais bel et bien cat
!
$ echo "Bonjour les amis" > f1.txt
$ echo "du cours SE2" > f2.txt
$ cat f1.txt f2.txt > f3.txt
$ printf '%s\n' f3.txt
Et pour afficher le résultat du troisième, on utilise plutôt echo
ou printf
!
Pour ce genre de demande d’aide, essaie de privilégier le partage de copies en texte de ton script plutôt que des images
Ça nous permet entre autres de facilement copier-coller ce que tu partages pour le tester, et l’examiner dans de meilleurs conditions.
Genial! merci cedric058 ca marche le paramètre * -d " " *
juste svp sans trop vous demander, pourries-vous me passer un site qui explique bien l’utilisation de paste avec des paramètres pour mon apprentissage.
ok je suis d’accord avec toi, mais je ne sais pas
comment le mettre. je copie direct sur la fenêtre. merci.
Sauf que dans ce cas le fichier f3.txt
contient deux lignes et non pas le texte demandé
Une possibilité
cat f1.txt f2.txt | tr '\n' ' ' > f3.txt
Mais la fin de ligne est perdue. Pour la rétablir
⌁ fp2@debpacha:/tmp $ file f3.txt
f3.txt: ASCII text, with no line terminators
⌁ fp2@debpacha:/tmp $ printf "\n" >> f3.txt
⌁ fp2@debpacha:/tmp $ file f3.txt
f3.txt: ASCII text
⌁ fp2@debpacha:/tmp $
Tout ceci est bien compliqué par rapport à la solution basée sur paste
, d’autant plus que ce programme fait partie de coreutils
(comme cat et printf et même tr
)
Je dirais même plus : utilisez debmany
debmany coreutils
Cette commande vient du paquet debian-goodies
.
Exercice : donner à 10% près le nombre de fichiers d’information affiché par la commande ci-dessus.
Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة
F. Petitjean
Ingénieur civil du Génie Maritime.
« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)
« Celui qui, parti de rien, n’est arrivé nulle part n’a de merci à dire à personne !! »
Pierre Dac
J’ai essaye PengouinPdt ton script mais ca ne donne pas le résultat escompte.
mais par contre le parametre -d " " que cedric058 m’a propose marche correctement. merci en tous cas pour ton aide. voir l’imprime ecran
Bonjour
michel@debT450:~$ echo -n "Bonjour les amis" > f1.txt
michel@debT450:~$ echo -n "du cours SE2" > f2.txt
michel@debT450:~$ echo -n "$(<f1.txt) $(<f2.txt)" > f3.txt
michel@debT450:~$ echo "$(<f3.txt)"
Bonjour les amis du cours SE2
michel@debT450:~$
Dans ces 3 fichiers, il n’y a que le contenu qui était demandé dans l’énoncé,
et il n’y a donc aucun caractère retour à la ligne.
salut littlejohn75 j’ai essaye ton script mais il y a eu un petit défaut qui est apparu
voir imprime ecran! fin du script s’est glisse après la fin f3.txtcap2|690x240
merci pour ton aide
Génial! MicP ta méthode marche aussi, je l’ai teste voir imprime écran
Merci pour ton aide.
Création du fichier f1.txt
:
echo -n "Bonjour les amis" > f1.txt
Création du fichier f2.txt
:
echo -n "du cours SE2" > f2.txt
Le contenu du script fusion.sh
:
#!/bin/bash
echo "$(<$1) $(<$2)" | tee f3.txt
Lancement du script :
michel@debT450:~$ ./fusion.sh f1.txt f2.txt
Bonjour les amis du cours SE2
michel@debT450:~$
je vois qu’il y a une multitude de façon pour résoudre ce petit énoncé
Merci
je pense qu’on peut le mettre dans un script pour exécuter un seul fois.
Oui, mais ce n’est pas ce qui était demandé dans l’énoncé :
J’avais d’ailleurs oublié de faire afficher par le script
le contenu du fichier f3.txt
michel@xubu:~$ echo $(<f1.txt)
Bonjour les amis
michel@xubu:~$
michel@xubu:~$ echo $(<f2.txt)
du cours SE2
michel@xubu:~$
donc si j’ai bien compris on fait la création de deux fichier avec écho, puis on crée le script fusion.sh
#!/bin/bash
echo "$(<$1) $(<$2)" > f3.txt
echo $(<f3.txt)
et la fin on reviens dans le terminal et on exécute le script on donnant les deux fichiers.
juste tu peux me dire ce que ca signifie le parametre -n apres echo
Les commandes que tu reprends sont celles qui permettaient d’afficher le contenu des fichiers créés,
mais j’ai modifié mon message en les remplaçant par les commandes qui permettent
de créer les fichiers f1.txt
et f2.txt
Dans le script, j’ai utilisé la commande tee
car elle permet d’afficher le flux tout en créant le fichier.
Voir la page du manuel de la commande tee
:
man tee
À part la commande tee
toutes les autres commandes utilisées (echo, pipe et les commandes de redirection)
sont des commandes qui sont intégrées dans l’interpréteur de commandes bash
Tu peux lire les pages man du bash
:
man bash
et lire aussi cette page web : https://wiki.bash-hackers.org/howto/redirection_tutorial
Juste vite fait en passant, si un exercice de ce type necessite l’installation d’un package specifique non standard (i.e.: ne faisant pas partie d’une instalaltion de base )
C’est que ce n’est pas la bonne solution. la solution la pls simple est souvent la meilleure