Ich versuche, eine Gruppe von Linien herauszufiltern, die einem Muster mit einer Regexp entsprechen, habe aber Probleme, die richtige Regexp zu verwenden.So passen Sie eine Gruppe von Linien an, die einem Muster entsprechen
Die Textdatei enthält Zeilen wie diese:
transaction 390134; promote; 2016/12/20 01:17:07 ; user: build
to: DEVELOPMENT ; from: DEVELOPMENT_BUILD
# some commit comment
/./som/file/path 11745/409 (22269/257)
# merged
version 22269/257 (22269/257)
ancestor: (22133/182)
transaction 390136; promote; 2016/12/20 01:17:08 ; user: najmi
to: DEVELOPMENT ; from: DEVELOPMENT_BUILD
/./some/other/file/path 11745/1 (22269/1)
version 22269/1 (22269/1)
ancestor: (none - initial version)
type: dir
Ich möchte die Linien, um herauszufiltern, die mit „Transaktion“, enthalten starten „Benutzer: bauen den ganzen Weg bis zur nächsten Zeile, die mit“ Transaktion“.
Die Idee ist, mit Transaktionszeilen zu landen, wo Benutzer nicht‚Build‘.
Vielen Dank für jede Hilfe.
Möchten Sie das? https://regex101.com/r/DOeWXt/1 –
@ Herr Kang Vielen Dank für die coole Regex101.com Website. Die Regexp wie gezeigt entspricht nicht dem gesamten Transaktionsdatensatz, der mehrere Zeilen umfasst, also ist dies nicht genau das, wonach ich gesucht habe. Ich wäre dankbar für eine reine Regexp-Lösung, die der von pii_ke freundlicherweise angegebenen Perl-Lösung entspricht. –
@ Mr.kang Ich habe folgende Regexp in der Verknüpfung arbeiten, die Sie gaben: ^ Transaktion. +? Benutzer: \ s (?! Build) (. | \ N) + Allerdings habe ich Probleme bekommen, dass mit folgendem Befehl grep zu arbeiten: grep "^ Transaktion. +? Benutzer: \ s (?! Build) (. | \ n) +" test_data.txt –