Ich habe diesen Text in der Datei:Wie kann ich sed verwenden, um ein Suchmuster in einer mehrzeiligen Zeichenfolge hinzuzufügen?
<TAG-ONE> multi
line
text
<TAG-TWO> multi
line
text
will ich es bekommen:
<TAG-ONE> multi
line
text
</TAG-ONE>
<TAG-TWO> multi
line
text
</TAG-TWO>
Bitte helfen Sie mir, dieses Muster zu beenden:
sed '/^<[A-Z-]*>/,/^</{s/^<\([A-Z-]*\)>/&\n\1/}'
Gut zu beachten, dass das Array-Argument zu 'match' eine gawk-only-Erweiterung ist. Mit regulärem awk können Sie etwas in Übereinstimmung mit 'match ($ 0," <.*> ") tun; tag = "" substr ($ 0, RSTART + 1, RLENGTH-1); 'stattdessen. – jas
Danke 'awk '/^<.*>/{if (tag! =" ") {Print tag;}; Übereinstimmung ($ 0, "<[A-Z-]+>"); tag = "" substr ($ 0, RSTART + 1, RLENGTH-1);} {print} ENDE {print tag} 'funktioniert gut –