Печать группы регулярных выражений в 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

Как я могу вывести только идентификатор группы и DIV группы?

0
задан 10 April 2019 в 14:35
1 ответ

Решение с использованием sed

Изменения:

  • в части идентификатора: +. +? -> . *
  • в дате часть: . +? -> . *

Вывод вашего примера ввода:

$ 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

Может быть, это сработает для вас?

1
ответ дан 4 December 2019 в 15:43

Теги

Похожие вопросы