Назад | Перейти на главную страницу

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

Решение с использованием 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

Может, это у вас работает?