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> |