J'ai le format de fichier suivant:
<common>
fitnes=0
genetic=1
method=0
</common>
<inputs>
foo=bar
bar=foo
</inputs>
<limits>
balance=200.00
</limits>
et je voudrais supprimer tout ce qui est entre <inputs>
et </inputs>
(à l'exception du motif lui-même) et le remplacer par le contenu d'un autre fichier (par exemple foo.txt
). En d'autres termes, les lignes avec foo=bar
et bar=foo
seraient remplacées par un autre contenu.
Cela peut probablement être similaire à la façon dont vous supprimez une correspondance sur plusieurs lignes , comme:
:g/<inputs/,/inputs>/d
mais je ne suis pas sûr de ce que je devrais remplacer d
pour insérer le contenu d'un autre fichier, mais je veux garder le modèle correspondant.
Une approche similaire consisterait à supprimer le contenu interne de la balise html , comme
:/<inputs>/norm vitd
mais je ne sais pas comment y ajouter le contenu du fichier.
Idéalement, j'essaie de trouver un liner, car il fera partie d'un autre script.
Comment puis-je y parvenir?
ex
script où je peux spécifier le fichier à insérer en fonction des arguments d'entrée de l'utilisateur.S'il s'agit d'une nouvelle tentative d'analyse XML avec des outils non XML, ne le faites pas.
Les solutions ici sont valables, mais l'intention pourrait ne pas l'être. Si le XML ne provient pas d'une source bien apprivoisée, vous pourriez obtenir des échappements, CDATA ou des espaces blancs dans la balise!
Donc xsltproc de la commande dans vi peut gérer cela.
la source
ini
fichier bien documenté ayant ces 3 balises de type XML.