Disons que j'avais un bloc de texte dans ~/.bashrc
:
#~/.bashrc
# ...some commands...
# aliases
alias suicide='sudo rm -rf /'
# end aliases
# other commands
Je souhaite remplacer ce bloc de texte par un autre texte contenu entre deux marqueurs dans un autre fichier: stuff-to-place-in-bashrc.txt
# stuff-to-place-in-bashrc.txt
# ...stuff...
# aliases
alias ldir='ls * -d'
alias ithinklifeisworthliving='echo all good'
# end aliases
# ...more stuff...
J'ai essayé
sed -ne 's/# aliases\s+\(.*\)\s+# end aliases/\1/' stuff-to-place-in-bashrc.txt
Mais je balance vraiment dans le noir ici. Est-ce que quelqu'un peut me donner un coup de main?
Comment puis-je extraire le texte du
stuff-to-place-in-bashrc.txt
?Comment remplacer l'autre section
~/.bashrc
par le texte extrait de la question 1?
Éditer
Merci pour les mises à jour, ceux qui se demandent pourquoi je voudrais quelque chose comme ça:
permet des mises à jour triées sur le volet des fichiers de script sans remplacer les ajouts créés par l'utilisateur. utile pour les environnements d'exploitation standard partagés et fréquemment mis à jour (comme mon dernier travail chez Tyro qui codait avec XP).
devenez fou les gars.
la source
# aliases
et# end aliases
), et cela peut fonctionner pour vous.Réponses:
Ed est l'éditeur standard, car vous pouvez l'utiliser pour développer des scripts ed et le laisser faire son travail, comme vous l'avez testé auparavant, de manière interactive. Pour les petits fichiers comme
.bashrc
ou tout texte de code, ed est performant car il lit le fichier entier en une seule fois et fonctionne avec le tampon. Pour la même raison, vous ne devez pas utiliser ed pour les gros fichiers comme les fichiers journaux.Mais avec un script ed, votre travail se fait en un rien de temps:
J'utilise des scripts similaires pour régler automatiquement les fichiers de configuration, comme als .asoundrc pour différents environnements dans lesquels j'utilise mon ordinateur portable.
Le meilleur document sur ed vient comme une simple page de manuel du système PLAN9 très cool . Je l'ai traduit en un document postscript ed.ps. Si vous êtes intéressé par PLAN9, vous devriez vérifier 9front et http://cat-v.org/ car la version originale de bell labs est toujours maintenue mais a un système de fichiers très simple.
Un dernier mot sur les guerres des éditeurs, emacs, vim et autres: les règles d'acme!
la source
w
,q
)/^# aliases
, et/^# end aliases/
), et les autres commandes sont Vi / Ed. Voir, par exemple, vimhelp.appspot.com/cmdline.txt.html#%3Arange pour+, /^# end aliases/
.info Ed
sur votre système (j'espère). Je ne sais pas pourquoi les distributions Linux modernes n'installent pas cet éditeur sympa. w et q sont des commandes d'écriture et de sortie. Et ed fonctionne de manière très similaire à sed avec des regexes. Il y a une raison pour laquelle les noms sonnent autant. d signifie supprimer les lignes adressées, -r lit dans la ligne précédente les résultats de la!
commande qui suit. Je raccourcis les noms de fichiers sur l'édition, car je suis tellement paresseux à taper ce matin.Si vous souhaitez modifier le fichier sur place
ed
est une très bonne solution. Si vous souhaitez le modifier en continu, utilisezsed
. A évitersed -i
.la source
Bien sûr, vous pouvez le faire
ed
seul, sans avoir besoin d'outils supplémentaires:si vous êtes satisfait du résultat, remplacez
,p
parw /home/username/.bashrc
pour écrire les modifications dans~/.bashrc
(notez le chemin complet utilisé avecr
etw
; vous pouvez simplement utiliser.bashrc
s'il est dedanscwd
).Comment cela fonctionne: nous
d
supprimons d' abord les lignes inutiles destuff_to_place.txt
. Ensuite, nous supprimons les autres (les alias) avec,d
. Le tampon de texte est maintenant vide tandis que le tampon de coupe contient les lignes que nous voulons. Nousr
lisons ensuite le contenu de.bashrc
dans le tampon de texte, mettons le contenu du tampon de coupure (x
) après la/# aliases/
ligne, dupliquons la dernière ligne qui a été collée (.t.
) puis supprimons de la ligne dupliquée jusqu'à mais non inclus/# end aliases/
et finalementp
rint ouw
rite changements etq
uit.la source