Инструменты пользователя

Инструменты сайта

Загрузка не удалась. Возможно, проблемы с правами доступа?

linux:awk

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

linux:awk [2017/12/09 11:05]
linux:awk [2021/02/11 09:20] (текущий)
Строка 1: Строка 1:
 +===== Linux: примеры использования awk =====
 +gawk это язык распознавания и обработки шаблонов.
 +Примеры:​
 +<code bash>
 +#​выборка полей из стандартного вывода
 +#​выбирает первое поле
 +$ echo 'one two three four' | awk '​{print $1}'
 +> one
  
 +#​выбирает третье и первое поле
 +$ echo 'one two three four' | awk '​{print $3,​$1}'​
 +> three one
 +</​code>​
 +Если полярзделены не пробелом или табулятором,​ то используем ключ -F:
 +<code bash>
 +....awk -F":"​ '​{print $4}'
 +</​code>​
 +
 +Если количество полей неизвестно,​ то используем переменную NF:
 +<code bash>
 +#​выбираем последнее поле
 +....awk '​{print $NF}'
 +</​code>​
 +или предпоследнее
 +<code bash>
 +....awk '​{print $(NF-1)}'​
 +</​code>​
 +как вариант,​ выбрать поле ровно посередине
 +<code bash>
 +....awk '​{print $((NF/​2)+1)}'​
 +</​code>​
 +Подсчитать число байт переданных веб-сервером,​ на основании его log-файла (известно,​ что байты там последнее поле)
 +<code bash>
 +$ cat requests.log
 +23 июля 18:57:12 HTTPD [31950]: "GET / Foo / бар HTTP / 1.1" 200 344
 +23 июля 18:57:13 HTTPD [31950]: "GET / HTTP / 1.1" 200 9300
 +23 июля 19:01:27 HTTPD [31950]: "GET / HTTP / 1.1" 200 9300
 +23 июля 19:01:55 HTTPD [31950]: "GET / Foo / Baz HTTP / 1.1" 200 6401
 +23 июля 19:02:31 HTTPD [31950]: "? GET / Foo / Baz страница = 2 HTTP / 1.1" 200 6312
 +$ < requests.log awk '​{totalBytes+=$NF} END {print totalBytes}'​
 +31657
 +</​code>​
linux/awk.txt · Последние изменения: 2021/02/11 09:20 (внешнее изменение)