簡體   English   中英

如何使用Logstash Grok拆分文件名?

[英]How do I split a filename using Logstash Grok?

有一天我會學習正則表達式。

我有以下文件名

PE-run1000hbgmm3f1-job1000hbgmm3dt-Output-Workflow-1000hbgmm3fb-22.07.17.log

我能夠讓這個工作如此......

(?<logtype>[^-]+)-(?<run_id>[^-]+)-(?<job_id>[^-]+)-(?<capability>[^(0-9\.0-9\.0-9)]+)

logtype: PE
run_id: run1000hbgmm3f1
job_id: job1000hbgmm3dt

但我得到了

capability: Output-Workflow-

......雖然我想要它

capability: Output-Workflow-1000hbgmm3fb

...即job_id之后的所有文本直到時間戳HH.mm.ss. 有什么幫助嗎? 謝謝!

這是因為你不能否定一個帶有否定字符類的符號序列 [^(0-9\\.0-9\\.0-9)]匹配以外的任何單個字符( ,數字.)

您可以將(?<capability>[^(0-9\\.0-9\\.0-9)]+)替換為(?<capability>.*?)-\\d{2}\\.\\d{2}\\.\\d{2}以獲得正確的值。

在此輸入圖像描述

現在, (?<capability>.*?)-\\d{2}\\.\\d{2}\\.\\d{2}將匹配任何0+字符(並將它們捕獲到“功能”組)中盡可能(因為*?是一個惰性量詞),直到第一次出現- ,然后是2位數,然后是3個點的序列( \\. ),后跟2位數。

請參閱regex101.com上的正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM