-1

Я выдаю команду ниже против файла журнала

grep "Oracle Audit" /var/adm/messages | awk '{print $6}'

Как мне отформатировать вывод ниже

Audit[9460]:
Audit[10507]:
Audit[10507]:
Audit[10507]:

показывать только цифры, например

9460
10507
10507
etc

2 ответа2

0

Если вы хотите чистое решение awk , попробуйте

awk '{ sub("Audit\\[", "", $6); sub("]:", "", $6); print $6 }'

который заменяет нежелательные строки в $6 ничем.  Вполне возможно, что ответ Кира может быть быстрее, чем этот.  Или нет.

0

Нет необходимости в awk , grep может сделать это самостоятельно:

grep -oP 'Oracle Audit\[\K[0-9]+(?=\])' /var/adm/messages

\K после Oracle Audit\[ сбрасывает начало сообщенного соответствия к этой точке. Так что это не часть матча. После цифр, которые вы хотите напечатать, есть заглядывание вперед (?=) Аналогично последовательности \K

Он напечатает:

9460
10507
10507
10507

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .