Script
Fermé
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
-
29 sept. 2009 à 00:49
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 1 oct. 2009 à 00:05
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 1 oct. 2009 à 00:05
A voir également:
- Script
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
- Script download - Télécharger - Édition & Programmation
4 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 896
29 sept. 2009 à 10:15
29 sept. 2009 à 10:15
Salut,
Alors concernant la commande "echo" à répétition, comme tu en as parlé toi même, il suffit de mettre un "anti-slash" en fin de chaque ligne :
Concernant le fichier à insérer avant une ligne contenant un motif précis, c'est faisable avec "sed" et sa commande "i" (insertion), par contre cela demande un traitement au-préalable sur le fichier devant être inséré...
En gros il faut rajouter un "anti-slash" (encore ;-\ ) en fin de chaque ligne, sauf la dernière, du ficher que l'on veut insérer.
Un exemple sera plus parlant :
;-))
Alors concernant la commande "echo" à répétition, comme tu en as parlé toi même, il suffit de mettre un "anti-slash" en fin de chaque ligne :
echo -e "\tNS1:id=\"${i}\"\ \tNS1:type=\"\"\ \tNS1:title=\"RENAME ME ! ${i}\"\ \tNS1:chars=\"UTF-8\"\ \tNS1:comment=\"\"\ \tNS1:source=\"http://www.restoredfromdoom.bck/\"\ \tNS1:icon=\"resource://scrapbook/data/${i}/favicon.ico\" />" > $fDESC
Concernant le fichier à insérer avant une ligne contenant un motif précis, c'est faisable avec "sed" et sa commande "i" (insertion), par contre cela demande un traitement au-préalable sur le fichier devant être inséré...
En gros il faut rajouter un "anti-slash" (encore ;-\ ) en fin de chaque ligne, sauf la dernière, du ficher que l'on veut insérer.
Un exemple sera plus parlant :
ssh$ cat plop # le fichier à modifier blablabla blablabla blablablablablabla blablaici blablabla blablabla blablablablablabla re-blablaici blablabla blablabla ssh$ cat tmp.txt # le fichier à insérer Quelques lignes écrites avec echo avec une seule redirection, sans avoir recours à bin/echo -e... Fin. ssh$ sed '$! s/$/\\/' tmp.txt > temp.txt # ajout anti-slash en fin de ligne ssh$ cat temp.txt # vérification Quelques lignes\ écrites avec echo\ avec une seule redirection,\ sans avoir recours à bin/echo -e...\ Fin. ssh$ var=$(cat temp.txt) # Initialisation variable avec contenu du fichier ssh$ sed '/^re/i'"$var"'' plop # La commande pour insérer le fichier blablabla blablabla blablablablablabla blablaici blablabla blablabla blablablablablabla Quelques lignes écrites avec echo avec une seule redirection, sans avoir recours à bin/echo -e... Fin. re-blablaici blablabla blablabla ssh$ sed -i.bak '/^re/i'"$var"'' plop # la même mais en modifiant le fichier d'origine (paramètre "-i.bak") et en créant une sauvegarde du fichier original avec l'extension ".bak" ssh$ cat plop # le résultat final blablabla blablabla blablablablablabla blablaici blablabla blablabla blablablablablabla Quelques lignes écrites avec echo avec une seule redirection, sans avoir recours à bin/echo -e... Fin. re-blablaici blablabla blablabla ssh$
;-))
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
318
29 sept. 2009 à 23:09
29 sept. 2009 à 23:09
Comment on écrit quelques lignes avec echo sans utiliser l'option e ?
On est vraiment obligé d'utiliser une variable pour insérer le truc ?
En fait il semble que quand on utilise read les données sont incluses après l'adresse et avec i avant donc en réadaptant un peu comme je l'ai fait avec des redirections ça devrait marcher.
En tout cas merci. :)
Jipicy le plus fort de Linux et du shell ! Toujours là pour donner la réponse même quand c'est un peu compliqué ! =D
On est vraiment obligé d'utiliser une variable pour insérer le truc ?
En fait il semble que quand on utilise read les données sont incluses après l'adresse et avec i avant donc en réadaptant un peu comme je l'ai fait avec des redirections ça devrait marcher.
En tout cas merci. :)
Jipicy le plus fort de Linux et du shell ! Toujours là pour donner la réponse même quand c'est un peu compliqué ! =D
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
30 sept. 2009 à 08:42
30 sept. 2009 à 08:42
Re-
Comment on écrit quelques lignes avec echo sans utiliser l'option e ?
Un exemple est toujours plus parlant :
On est vraiment obligé d'utiliser une variable pour insérer le truc ?
Oui. Enfin à ma connaissance...
La commande "i" (insertion) de sed, insère le texte écrit immédiatement derrière elle, éventuellement sur plusieurs lignes à condition que chaque ligne soit délimitée par un anti-slash (synonyme de retour à la ligne). On ne peut pas appeler un fichier, ni une commande du shell, d'où l'emploi d'une variable.
En fait il semble que quand on utilise read les données sont incluses après l'adresse et avec i avant donc en réadaptant un peu comme je l'ai fait avec des redirections ça devrait marcher.
Comme expliqué ci-dessus, la commande "i" de sed ne peut faire appel à une commande externe, ni lire un fichier.
Tout comme les commandes "r" (lecture d'un fichier) et/ou "w" (écriture dans un fichier) doivent être les dernières sur la ligne. Tout ce qui suit ces commandes est considéré comme faisant partie du nom du fichier...
Attends d'autres avis, avec d'autres commandes peut être, pour ma part c'est tout ce que j'entrevois comme solution.
Par contre je ne vois pas ce qui est gênant dans l'emploi d'une variable pour inclure le texte ??
;-)
Comment on écrit quelques lignes avec echo sans utiliser l'option e ?
Un exemple est toujours plus parlant :
[tmpfs]$ cat foo.sh #! /bin/sh #set -xv echo "Une première ligne suivie d'une autre puis d'une autre et tout ça sans le paramètre -e et sans slash à la fin par contre il faut indenter le texte à la main." > toto [tmpfs]$ ./foo.sh [tmpfs]$ cat toto Une première ligne suivie d'une autre puis d'une autre et tout ça sans le paramètre -e et sans slash à la fin par contre il faut indenter le texte à la main. [tmpfs]$
On est vraiment obligé d'utiliser une variable pour insérer le truc ?
Oui. Enfin à ma connaissance...
La commande "i" (insertion) de sed, insère le texte écrit immédiatement derrière elle, éventuellement sur plusieurs lignes à condition que chaque ligne soit délimitée par un anti-slash (synonyme de retour à la ligne). On ne peut pas appeler un fichier, ni une commande du shell, d'où l'emploi d'une variable.
En fait il semble que quand on utilise read les données sont incluses après l'adresse et avec i avant donc en réadaptant un peu comme je l'ai fait avec des redirections ça devrait marcher.
Comme expliqué ci-dessus, la commande "i" de sed ne peut faire appel à une commande externe, ni lire un fichier.
Tout comme les commandes "r" (lecture d'un fichier) et/ou "w" (écriture dans un fichier) doivent être les dernières sur la ligne. Tout ce qui suit ces commandes est considéré comme faisant partie du nom du fichier...
Attends d'autres avis, avec d'autres commandes peut être, pour ma part c'est tout ce que j'entrevois comme solution.
Par contre je ne vois pas ce qui est gênant dans l'emploi d'une variable pour inclure le texte ??
;-)
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
318
1 oct. 2009 à 00:05
1 oct. 2009 à 00:05
Ça ne fait pas parti de mes habitudes, c'est tout.
Maintenant quand y'a pas le choix : y'a pas le choix.
Merci.
Maintenant quand y'a pas le choix : y'a pas le choix.
Merci.