User Tools

Site Tools


генератор_отчетов_awk

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revision Both sides next revision
генератор_отчетов_awk [2009/03/02 13:06]
val created
генератор_отчетов_awk [2018/06/15 14:12]
val [Подсчет количества элементов]
Line 1: Line 1:
 ====== Генератор отчетов awk ====== ====== Генератор отчетов awk ======
-===== Печать исходных данных без изменений ===== 
  
 +  * [[https://​youtu.be/​4PkkMzB7fIM|Видео:​ Генератор отчетов AWK]]
 +  * [[https://​ru.wikipedia.org/​wiki/​AWK|AWK в Википедии]]
 +  * [[http://​lib.ru/​MAN/​DEMOS210/​awk.txt|Язык обработки структурированных текстов AWK]]
  
 +===== Печать исходных данных без изменений =====
 +<​code>​
 $ awk '​{print}'​ /etc/passwd $ awk '​{print}'​ /etc/passwd
 +
 $ awk '​{print $0}' /etc/passwd $ awk '​{print $0}' /etc/passwd
  
-Фильтрация данных+$ awk -F: '​{print $1 " " $7}' /​etc/​passwd 
 +</​code>​ 
 +===== Фильтрация данных ​===== 
 +<​code>​ 
 +$ awk '/​^user/​ {print $0}' /​etc/​passwd 
 +</​code>​
  
-$ awk '/root/ {print $0}' /​etc/​passwd +===== Использование разделителя полей и отрицательного условия ===== 
-root:​*:​0:​0:​Charlie &:/​root:/​bin/​csh +<​code>​ 
-toor:​*:​0:​0:​Bourne-again Superuser:/​root:​ +$ awk -F: '!/sh$/ {print $1}' /​etc/​passwd 
-daemon:​*:​1:​1:​Owner of many system processes:/​root:/​usr/​sbin/nologin+</code>
  
-Использование ​разделителя полей и отрицательного ​условия+===== Использование заголовков и итогов в отчетах,​ использование переменных ===== 
 +<​code>​ 
 +$ awk -F: 'BEGIN {print "Users used /​bin/​sh:";​ count=0} /bin\/sh$/ {print $1; count++} END {print "​Summary:"​ count " users"​}'​ /​etc/​passwd 
 +</​code>​
  
-$ awk -F: '​!/​nologin/​ {print $1}' /​etc/​passwd +===== Обработка файла почтового ящика пользователя ​===== 
-# $FreeBSD +с какой строки начинается и от кого письмо 
-+<​code>​ 
-root +cat ex1.awk 
-toor +</​code><​code>​
- +
-Использование заголовков и итогов в отчетах,​ использование переменных. +
- +
-$ awk -F: 'BEGIN {print "Users used csh"; count=0} /csh$/ {print $1; count++} END {print count " users"​}'​ /​etc/​passwd +
- +
-Обработка файла почтового ящика пользователя ​(с какой строки начинается и от кого письмо) +
- +
-ee ex1.awk+
 BEGIN {st=1} BEGIN {st=1}
 /^$/ {st=1} ​ /^$/ {st=1} ​
Line 34: Line 39:
         }          } 
 !/^$/ {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 
 +</​code><​code>​ 
 +Переслать отдельное письмо:​
  
-Отчет по суммарному количеству товаров на складе:​+tail -n +21 /​var/​mail/​user1 | formail -1 -s sendmail val@bmstu.ru 
 +</​code>​
  
-$ cat > wares.txt+ 
 +===== Подсчет количества элементов ===== 
 +<​code>​ 
 +$ cat list_ip.txt 
 +</code><​code>​ 
 +172.16.1.5 
 +172.16.1.3 
 +172.16.1.5 
 +172.16.1.1 
 +172.16.1.5 
 +172.16.1.1 
 +</​code><​code>​ 
 +$ cat list_ip.txt | awk '​{M[$1]+=1}END{for (i in M) {print M[i] " " i}}' | sort -n 
 +</​code>​ 
 + 
 +===== Отчет по суммарному количеству товаров на складе ===== 
 +<​code>​ 
 +$ cat wares.txt 
 +</​code><​code>​
 table:34 table:34
 car:24 car:24
 apple:23 apple:23
 car:12 car:12
-<Ctrl>-D +</​code><​code
- +cat ex2.awk 
-ee ex2.awk+</​code><​code>​
 { {
         M[$1]+=$2         M[$1]+=$2
Line 59: Line 86:
         }         }
 } }
 +</​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>​
генератор_отчетов_awk.txt · Last modified: 2022/03/02 15:50 by val