Forums FUG-FR | |
https://forums.fug-fr.org/cgi-bin/yabb2/YaBB.pl
Divers et varié >> Programmation >> Script sh et sed (ou autre) https://forums.fug-fr.org/cgi-bin/yabb2/YaBB.pl?num=1162405284 Message started by Marck on 01. Nov 2006 at 19:21 |
Title: Script sh et sed (ou autre) Post by Marck on 01. Nov 2006 at 19:21
Bonjour
J'aimerais savoir comment dans un script sh je peux utiliser sed (ou une autre commande) pour modifier un fichier sans passer par un fichier intermédiaire. Un exemple pour être plus clair. Dans le fichier original "init" (de fluxbox) je souhaite changer "Clean" en "Cthulhain". Avec le script suivant cela fonctionne bien mais uniquement à l'écran, le fichier "init" n'étant pas modifié. Code (]#!/bin/sh echo "debut" sed 's/Clean/Cthulhain/' init echo "fin"[/code):
Mais j'aimerais savoir s'il est possible de se passer du fichier intermédiaire "init.new". N'hésitez pas à être apparemment "hors sujet" dans vos réponses, toute information concernant la modification de fichiers texte dans un script sh m'intéresse car comme le montre ma question je ne connais guère sed ou awk ou autre... Marc |
Title: Re: Script sh et sed (ou autre) Post by shes on 01. Nov 2006 at 21:28
#!/bin/sh
sed 's/Clean/Cthulhain/' init >> init oops non #!/bin/sh TMP=`sed 's/Clean/Cthulhain/' init`; touch init echo $TMP > init arf tjs pas top perl -pi -e 's/Clean/Cthulhain/' init ou sed -i init 's/Clean/Cthulhain/' init |
Title: Re: Script sh et sed (ou autre) Post by Marck on 02. Nov 2006 at 07:58
:)
Merci Shes, cela fonctionne comme prévu. J'avais bien essayé cette option -i mais sans écrire le nom du fichier derrière: [code]% sed -i 's/Clean/Cthulhain/' init sed: 1: "init": command i expects \ followed by text[/code] Et là je n'avais pas compris que ceci signifiait que je devais ajouter le nom du fichier... et même maintenant que je le sais, le message ne m'apparait pas plus clair pour autant! Marc |
Title: Re: Script sh et sed (ou autre) Post by shes on 02. Nov 2006 at 08:11
a vrai dire c'est pas totalement juste car après avoir effectuée cette commande tu te retrouves avec un fichier initinit en plus.
sed -i '' 's/Clean/Cthulhain/' init est la version correct pour ne pas effectuer de backup. le message que tu recoit signifie que sed -i attent un autre argument, celui ci correspond à l'extension du backup. On lui donne donc '' ce qui revient à "zero-length extension" comme décrit dans le manuel. |
Title: Re: Script sh et sed (ou autre) Post by Marck on 02. Nov 2006 at 10:31
Merci je n'avais même pas vu la création du fichier initinit!
Donc c'est maintenant avec "sed -i '' 's/Clean/Cthulhain/' init" que c'est parfait. C'est vrai que c'est écrit dans le man: Quote:
Je vais essayer de RTFMiser un peu plus même si les pages man manquent souvent cruellement d'exemples à mon goût (et pour ma compréhension). Marc |
Title: Re: Script sh et sed (ou autre) Post by Marck on 02. Nov 2006 at 19:56
Bon je crois que j'ai compris ce que je ne comprenais pas...:)
Il y avait confusion entre "-i" pour l'extention du fichier et "i" pour insérer des lignes dans un fichier en effet c'est ce dernier qui est concerné par ce message: Quote:
et non le "-i" que j'essayais alors d'utiliser. Voilà, en combinant les deux, je peux donc insérer directement une ligne 25 ajoutant un prompt au fichier dot.cshrc [code]sed -i '' '25i\ set prompt = "`whoami`% " ' dot.cshrc[/code] Cela tombe bien, je souhaitais justement le faire :) Marc |
Title: Re: Script sh et sed (ou autre) Post by Marck on 19. Nov 2006 at 18:46
Ce post étant maintenant mondialement connu ;) j'aimerais le compléter un peu.
Dans le fichier /usr/share/skel/dot.login je souhaite commenter les lignes non commentées. J'arrive à toutes les (re)commenter: Quote:
J'arrive à ne commenter que celles qui le sont déjà avec: sed '/#/s/^/#/' Mais je ne parviens pas à faire le contraire... En lisant des exemples, j'ai pensé qu'il fallait faire: sed '/#/!s/^/#/' mais ceci ne fonctionne pas. Alors j'ai aussi essayé: sed '/#/s/!^/#/' mais ce n'est pas mieux... Donc, même si tout commenter pourrait faire l'affaire, j'aimerais bien savoir (simple question de curiosité). Merci, Marc |
Title: Re: Script sh et sed (ou autre) Post by shes on 20. Nov 2006 at 09:25
sed '/^[^#]/s/^/#/' /usr/share/skel/dot.login
|
Title: Re: Script sh et sed (ou autre) Post by Marck on 20. Nov 2006 at 13:25
Bien... Merci
|
Forums FUG-FR » Powered by YaBB 2.5.2! YaBB Forum Software © 2000-2025. All Rights Reserved. |