小编guy*_*iom的帖子

从日志文件中提取 2 个字符串

我有一个不断填充的日志文件;我们假设它的名称是 logfile.txt。在此日志文件中,我想使用任何 bash 命令从包含同一行中其他字符串的单行中连续捕获子字符串。

这是日志文件中一行的示例:

2023-08-31 09:56:39,925 [G_M80T72|utx:0:ffffac17000b:45253299:64ec7753:79cb0e|chnl:LN1_CRYPTO_IN_MQ_REQ_AMP|id:196010175121000000000002134] WARN  transaction.GeneralTransactionFailureException - GeneralTransactionFailureException Gateway.Transaction[196010175121000000000000067v1], StatusReason[ProcessingFailed/PayloadIntegrityCheckFailed]
Run Code Online (Sandbox Code Playgroud)

我想在每次该行包含 时捕获 string1LN1和 string2 。CRYPTO_IN_MQ_REQ_AMPPayloadIntegrityCheckFailed

String1 前面始终带有chnl:',而 string2 后面始终带有管道。这2个字符串总是用下划线分隔(但string2也可以包含下划线)在我的例子中string1=LN1但它可能像{任何字母字符}LN{任何数字} String2可以由字母和数字组成

捕获 string1 和 string2 后,我将在另一个命令中将它们用作参数,例如: {another_command} string1 string2

当然,只有新的条目应该被捕获,我不想连续扫描完整的日志,只扫描新的行,所以我想首先是文件tail -f,然后使用一些 sed 魔法和正则表达式。

您知道如何继续吗?

bash string

2
推荐指数
1
解决办法
278
查看次数

标签 统计

bash ×1

string ×1