Linux SED -Expression zum Auswählen von Text zwischen MarkernLinux

Linux verstehen
Anonymous
 Linux SED -Expression zum Auswählen von Text zwischen Markern

Post by Anonymous »

Hier ist eine Herausforderung für Regex Gurus. Benötigen Sie einen sehr einfachen SED -Ausdruck, um Text zwischen Markierungen auszuwählen. < /P>
Hier ist ein Beispieltext. Bitte denken Sie daran, dass es alle speziellen Zeichen, Registerkarten und weiße Räume enthalten kann, obwohl dieses Beispiel nicht alle möglichen Kombinationen darstellt. < /P>

Code: Select all

^[[200~a^[[200~aaa aM1bb bbbM1ccc[$cM2ddddM2eeeeeM3ffffff fM3ggggggg M3hhhhh hhM3kkkkk~
< /code>

 Wählen Sie den Text zwischen dem ersten Start des Markers M1 aus und dem zuletzt übereinstimmenden Ende des Markers M3. Der Text, der aus dem Beispiel ausgewählt werden sollbb bbbM1ccc[$cM2ddddM2eeeeeM3ffffff fM3ggggggg M3hhhhh hh< /code> < /p>
< /blockquote>

 Wählen Sie den Text zwischen dem letzten Start des Markers M1 zum ersten übereinstimmenden Ende des Markers M3.ccc[$cM2ddddM2eeeee


Ich habe dies versucht, es hat aber den letzten Start des Markers zum letzten Ende des Markers
ausgewähltecho "^[[200~a^[[200~aaa aM1bb bbbM1ccc[\$cM2ddddM2eeeeeM3ffffff fM3ggggggg M3hhhhh hhM3kkkkk~"|sed -E "s|.*M1(.*)M3.*$|\1|g"

ccc[$cM2ddddM2eeeeeM3ffffff fM3ggggggg M3hhhhh hh
< /code>
Wie ist es möglich? Der einzelne Sed Regex -Ausdruck wäre der beste. Was ich meine, einzelne Regex ist für jede über zwei Anforderungen. d.h. zwei Regex
brauchen auch den äquivalenten Python -Re -Expression. < /p>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post