perl -F"\h+|'" -lane '
/\huser\h+ID\h/ and $a = $F[-1];
/\hREMOTE\h+ADDRESS:\h/ and print "$a $F[-1]";
' log.file
Perl
опции :-F"\h+|'"
Это разделяет текущую строку либо на серию горизонтальных пробелов, либо на один символ кавычки -. Это гарантирует, что искомая информация всегда находится в последнем поле. -l
Это устанавливает ORS
на новую строку, а также IRS
на новую строку. -a
Это приведет к разделению входных записей на основе разделителя полей, предоставленного опцией -F
, или по умолчанию на пробел. Поля, вырезанные из текущей записи, сохраняются в массиве @F
. -n
Это установит неявное чтение входного файла -в цикле + автоматическая печать записей на стандартный вывод отключена.
- когда мы встречаем строку с
user ID
и ограниченную с обеих сторон горизонтальными пробелами, мы продолжаем и запоминаем идентификатор пользователя, хранящийся в последнем поле, а именно, $F[-1]
. - , когда мы встречаем линию с
REMOTE ADDRESS:
и ограниченную с обеих сторон горизонтом. пробел, мы продолжаем и печатаем идентификатор пользователя, сохраненный ранее, и последнее поле этой строки, которое должно содержать IP-адрес.
Результаты:
pqr-xyz-coredev 101.16.75.75
user376300
09.10.2019, 07:49
Ссылка