Mam następujący format pliku:
<common>
fitnes=0
genetic=1
method=0
</common>
<inputs>
foo=bar
bar=foo
</inputs>
<limits>
balance=200.00
</limits>
i chciałbym usunąć wszystko, co jest pomiędzy <inputs>
i </inputs>
(z wyjątkiem samodzielnego wzorca) i zastąpić go treścią z innego pliku (np foo.txt
.). Innymi słowy wiersze z foo=bar
i bar=foo
zostaną zastąpione inną treścią.
Prawdopodobnie może być podobny do sposobu usuwania dopasowania wieloliniowego , na przykład:
:g/<inputs/,/inputs>/d
ale nie jestem pewien, co powinienem zastąpić d
, aby wstawić zawartość innego pliku, ale chcę zachować pasujący wzór.
Podobne podejście polegałoby na usunięciu wewnętrznej zawartości znacznika HTML , np
:/<inputs>/norm vitd
ale nie wiem, jak dodać do niego treść z pliku.
Idealnie staram się znaleźć jedną linijkę, ponieważ będzie ona częścią innego skryptu.
Jak mogę to osiągnąć?
ex
skryptu, w którym mogę określić, który plik do wstawienia w zależności od argumentów wejściowych użytkownika.Jeśli jest to kolejna próba parsowania XML za pomocą Narzędzi innych niż XML, nie rób tego.
Rozwiązania tutaj są poprawne, ale intencja może nie być. Jeśli XML nie pochodzi z dobrze oswojonego źródła, w tagu możesz otrzymać znaki ucieczki, CDATA lub białe spacje!
Więc xsltproc z polecenia w vi może sobie z tym poradzić.
źródło
ini
plikiem z tymi 3 znacznikami podobnymi do XML.