Как отфильтровать PID из журналов безопасности Linux SSH?

Как отфильтровать PID из журналов безопасности Linux SSH?
  Aug 12 01:30:26 server.example.com sshd[19486]: Failed password for root from X.X.X.X port 50528 ssh2
  Aug 12 01:30:26 server.example.com sshd[19486]: Received disconnect from X.X.X.X port 50528:11: Bye Bye [preauth]
  Aug 12 01:30:26 server.example.com sshd[19486]: Disconnected from X.X.X.X port 50528 [preauth]
  Aug 12 01:30:28 server.example.com sshd[19491]: Failed password for root from X.X.X.X port 59628 ssh2

У меня есть пример файла журнала Linux SSH, извлеченный из "/var/log/secure". Я хотел бы отфильтровать PID (19491 и 19486 в этом примере). Как мне добиться этого с помощью bash?

решение1

Использование awk:

awk -F '[][]' '{print $2}'  /var/log/secure
  • -F '[][]'иметь разделители файлов в виде открывающихся и закрывающихся фигурных скобок
  • $2 для проверки второго поля.

решение2

Это немного неуклюже, но я надеюсь, что кто-нибудь сможет опубликовать более короткую версию: я использовал команду sed, чтобы заменить символы "[" и "]" пустыми пробелами, а затем использовал команду awk, чтобы вывести 6-е поле

# cat /var/log/secure | sed 's/\[/ /g' | sed 's/\]/ /g' | awk ' {print $6}'
19486
19486
19486
19491

Связанный контент