This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
генератор_отчетов_awk [2011/11/30 10:52] 127.0.0.1 внешнее изменение |
генератор_отчетов_awk [2022/03/02 15:50] (current) val [Генератор отчетов awk] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Генератор отчетов awk ====== | ====== Генератор отчетов awk ====== | ||
| - | [[http://ru.wikipedia.org/wiki/AWK]] | + | * [[https://youtu.be/4PkkMzB7fIM|Видео: Генератор отчетов AWK]] |
| - | + | * [[https://ru.wikipedia.org/wiki/AWK|AWK в Википедии]] | |
| - | [[http://lib.ru/MAN/DEMOS210/awk.txt]] | + | * [[http://lib.ru/MAN/DEMOS210/awk.txt|Язык обработки структурированных текстов AWK]] |
| + | * [[https://superuser.com/questions/766887/tcpdump-how-to-get-grepable-output|tcpdump: how to get grepable output?]] | ||
| ===== Печать исходных данных без изменений ===== | ===== Печать исходных данных без изменений ===== | ||
| Line 15: | Line 16: | ||
| ===== Фильтрация данных ===== | ===== Фильтрация данных ===== | ||
| <code> | <code> | ||
| - | $ awk '/root/ {print $0}' /etc/passwd | + | $ awk '/^user/ {print $0}' /etc/passwd |
| </code> | </code> | ||
| ===== Использование разделителя полей и отрицательного условия ===== | ===== Использование разделителя полей и отрицательного условия ===== | ||
| <code> | <code> | ||
| - | $ awk -F: '!/nologin/ {print $1}' /etc/passwd | + | $ awk -F: '!/sh$/ {print $1}' /etc/passwd |
| - | # $FreeBSD | + | |
| - | # | + | |
| - | root | + | |
| - | toor | + | |
| </code> | </code> | ||
| + | |||
| ===== Использование заголовков и итогов в отчетах, использование переменных ===== | ===== Использование заголовков и итогов в отчетах, использование переменных ===== | ||
| <code> | <code> | ||
| - | $ awk -F: 'BEGIN {print "Users used csh"; count=0} /csh$/ {print $1; count++} END {print count " users"}' /etc/passwd | + | $ awk -F: 'BEGIN {print "Users used /bin/sh:"; count=0} /bin\/sh$/ {print $1; count++} END {print "Summary:" count " users"}' /etc/passwd |
| </code> | </code> | ||
| + | |||
| ===== Обработка файла почтового ящика пользователя ===== | ===== Обработка файла почтового ящика пользователя ===== | ||
| с какой строки начинается и от кого письмо | с какой строки начинается и от кого письмо | ||
| <code> | <code> | ||
| - | $ ee ex1.awk | ||
| - | |||
| $ cat ex1.awk | $ cat ex1.awk | ||
| + | </code><code> | ||
| BEGIN {st=1} | BEGIN {st=1} | ||
| /^$/ {st=1} | /^$/ {st=1} | ||
| Line 42: | Line 40: | ||
| } | } | ||
| !/^$/ {st=0} | !/^$/ {st=0} | ||
| - | + | </code><code> | |
| - | $ awk -f ex1.awk /var/mail/uX | + | $ awk -f ex1.awk /var/mail/user1 |
| + | </code><code> | ||
| String 1 | String 1 | ||
| - | From u0@server.class Tue Oct 18 10:05:44 2005 | + | From user1@host19.class.un Wed Feb 15 05:41:42 2012 |
| - | String 21 | + | String 19 |
| - | From u0@server.class Tue Oct 18 10:05:49 2005 | + | From user2@host19.class.un Wed Feb 15 05:41:58 2012 |
| - | String 41 | + | </code><code> |
| - | From u5@server.class Tue Oct 18 10:05:49 2005 | + | |
| Переслать отдельное письмо: | Переслать отдельное письмо: | ||
| - | tail -n +21 /var/mail/uX | formail -1 -s sendmail val@bmstu.ru | + | tail -n +21 /var/mail/user1 | formail -1 -s sendmail val@bmstu.ru |
| </code> | </code> | ||
| - | ===== Отчет по суммарному количеству товаров на складе ===== | + | |
| + | ===== Выбор строк по числовому условию ===== | ||
| + | |||
| + | * Пример назначения значений переменным и использования переменных окружения | ||
| + | * [[Команды фильтры#Вывод списка ip адресов из файла]] | ||
| <code> | <code> | ||
| - | $ vi wares.txt | + | $ cat list_count_ip.txt |
| + | </code><code> | ||
| + | 32 172.16.1.5 | ||
| + | 15 172.16.1.3 | ||
| + | 11 172.16.1.4 | ||
| + | 24 172.16.1.1 | ||
| + | </code><code> | ||
| + | $ COUNT=12 | ||
| + | $ cat list_count_ip.txt | awk -v c=$COUNT '{if ($1 > c) print $2}' | ||
| + | </code> | ||
| + | |||
| + | ===== Отчет по суммарному количеству товаров на складе ===== | ||
| + | <code> | ||
| $ cat wares.txt | $ cat wares.txt | ||
| + | </code><code> | ||
| table:34 | table:34 | ||
| car:24 | car:24 | ||
| apple:23 | apple:23 | ||
| car:12 | car:12 | ||
| - | + | </code><code> | |
| - | $ vi ex2.awk | + | |
| $ cat ex2.awk | $ cat ex2.awk | ||
| + | </code><code> | ||
| { | { | ||
| M[$1]+=$2 | M[$1]+=$2 | ||
| Line 77: | Line 91: | ||
| } | } | ||
| } | } | ||
| + | </code><code> | ||
| $ awk -F: -f ex2.awk wares.txt | $ awk -F: -f ex2.awk wares.txt | ||
| + | </code><code> | ||
| sum apple=23 | sum apple=23 | ||
| sum car=36 | sum car=36 | ||
| sum table=34 | sum table=34 | ||
| </code> | </code> | ||