Bash 中的正则表达式组打印

Bash 中的正则表达式组打印

我想在日志文件上使用 egrep,它只会输出我匹配组。

我在日志文件中有这样的内容:

queued as 6B6A72A7896   sent    00100000000000000   0       2019 Apr  7 00:37:39

使用 PCRE 正则表达式,我匹配了重要信息。

(?P<"id>"(queued as [A-Z-0-9]{11}))+.+?(?<"div>"([0-9]{4}\s[A-Za-z]{3}.+?[\d]{2}:[\d]{2}:[\d]{2}))

看这里:https://regex101.com/r/L1l396/1

我怎样才能仅输出组ID和组DIV?

答案1

使用 sed 的解决方案

变化:

  • 在 id 部分:+.+?->.*
  • 在日期部分:.+?->.*

示例输入的输出:

$ sed -n 's/.*\(queued as [A-Z0-9-]\{11\}\).*\([0-9]\{4\}\s[A-Za-z]\{3\}.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}\).*/id:\1 div:\2/p' file
id:queued as 6B6A72A7896 div:2019 Apr  7 00:37:37
id:queued as 25E642A7896 div:2019 Apr  7 02:12:02
id:queued as B4CCE2A7896 div:2019 Apr  7 02:26:49
id:queued as 247A22A7896 div:2019 Apr  7 02:28:25

也许这对你有用?

相关内容