我想過濾掉一組匹配使用正則表達式的模式的行,但在獲取正確的正則表達式時無法使用。如何匹配一組匹配模式的行
文本文件包含這樣的線路:
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
我想篩選出以「交易」開始的行,包含「用戶:建一路,直到開頭的下一行」交易」。
的想法是結束了交易,其中行用戶不‘建’。
感謝您的幫助。
你想要這個嗎? https://regex101.com/r/DOeWXt/1 –
@康先生感謝您展示酷酷的regex101.com網站。正如所示的正則表達式不匹配跨越多行的整個事務記錄,所以這不是我正在尋找的。我會感謝一個純粹的正則表達式解決方案,它相當於pii_ke給出的perl解決方案。 –
@ Mr.kang我得到了下面的正則表達式在你給的鏈接中工作: ^ transaction。+?user:\ s(?!build)(。| \ n)+ 但是,使用以下grep命令: grep「^ transaction。+?user:\ s(?!build)(。| \ n)+」test_data.txt –