Awk сопоставление с образцом на выходе не ввод - PullRequest
0 голосов
/ 22 июля 2011

Я использую awk для вывода актуальных данных из моих журналов Apache, например:

tail -f access_log | awk '{print $9, $1, $4, $7}';

Отлично работает, но выводит все изображения, CSS и т. Д. Поэтому я хотел бы ограничить вывод только HTML-страницами. Если я использую awk '/.html/ {print $9, $1, $4, $7}';, он по-прежнему совпадает почти со всеми строками в лог-файле, потому что реферер включает ".html". Мой вывод не имеет реферера, поэтому есть ли способ получить awk для совпадения только в моем выводе, а не на входе?

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Предполагая, что в поле 7 содержится интересующий вас URL, используйте

awk '$7 ~ /\.html/ {print <your-field-list>}'

Я думаю, что правильный номер поля зависит от формата вашего файла журнала.Я могу ошибаться.

Это говорит о том, что awk печатает список ваших полей только в том случае, если седьмое поле соответствует буквальной точке, за которой следует "html".

0 голосов
/ 22 июля 2011
... | awk '
{ 
  output = $9 OFS $1 OFS $4 OFS $7
  if (output ~ /.html/) print output
}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...