1. S e d & A w k
Какво е sed?
command line stream editor
Какво е awk?
pattern scanning and processing language
Какво са регулярните изрази?
как те могат да помогнат на администратора
Мариян Маринов <mm@yuhu.biz>
2. S e d & A w k
Азбуката на регулярните изрази
^ - съгласува началото на реда
$ - съглавува края на реда
[group] – съгласува с един символ от група
(group) – групира като отделна променлива
- escape-ва стандартен RE знак
. - съгласува се с всеки знак
| - или
qantifiers
? - съгласува 0 или 1 пъти
* - съглавува 0 или повече пъти
+ - съгласува 1 или повече пъти
{n} – съгласува точно n пъти
{n,m} – съгласува между n и m пъти
Мариян Маринов <mm@yuhu.biz>
3. S e d & A w k
Азбуката на регулярните изрази
{n,} - минимум n пъти
{,n} – максимум n пъти
променливи
$0 - целият string
$1 – първата група от ()
$n – n-тата група от ()
опции
g - global (продължава да съгласува след първото
съвпадение)
i - case insensitive
Мариян Маринов <mm@yuhu.biz>
4. S e d & A w k
За какво може да се използва sed?
Pattern matching в sed
/^$/ - празен ред
s/(.*)(.)/1/ - групиране и подмяна
s/.*/(&)/ - промяна на целия ред
Мариян Маринов <mm@yuhu.biz>
5. S e d & A w k
Основни команди на sed
15icola - обхват команда текст
обхват на командите:
всички редове
114 - само един ред
3,12 - от трети до 12 ред
/RE/ - регулярен израз
/RE/,/RE/ - от, до регулярен израз
/RE/,$ - от регулярен израз до края
Мариян Маринов <mm@yuhu.biz>
6. S e d & A w k
Основни команди на sed
изтриване:
/daemon/D - изтрива цял ред
въвеждане:
1itata - въвежда tata над първият
ред
1аtata - въвежда tata след първият
ред
извеждане:
/pts/p - извежда всеки ред наМариян Маринов <mm@yuhu.biz>
7. S e d & A w k
Основни команди на sed
подмяна:
s/x*/y/i
s/.*/(&)/
s/(.*)(.)(.)/23/ 1-9
/field/s/[d|l]$/G
s/n//g
sed '{s/dsa/ok/};{s/lkl/duh/}' test
sed -e 's/dsa/ok/' -e 's/lkl/duh/' test
Мариян Маринов <mm@yuhu.biz>
8. S e d & A w k
Подценяването на Awk
в системната админитстрация
ps ax|awk '{print $1}'
обхват на командите:
{} - всички линии
/RE/ {} - всички линии съвпадащи с
регуляреният израз
/RE1/,/RE2/ {} - всички линии попаднали между
първото съвпадение на RE1 и първото съвпадение
на RE2
$2 ~ /RE/ {} - всички линии чието второто поле
съвпада с регулярния израз
Мариян Маринов <mm@yuhu.biz>
9. S e d & A w k
Заместител на grep
ps aux|grep 'username'|awk '{print $2}'
ps aux|awk '/username/ {print $2}'
Извеждане на информация с дадена
логика
tail -f /var/log/exim_mainlog|awk '/SMTP/ {
if ($5 != “212.5.11.3”)
print “Connection from: “$5
}'
tail -f /var/log/exim_mainlog|awk '$5 !~ /212.5.11.3/ {
print “Connection from: “$5
}'
Мариян Маринов <mm@yuhu.biz>
10. S e d & A w k
Оператори:
|| && ~ !~
!=, ==, <, <<, <=, =>, >>, >,
+ - * / % ++ --
Вградени променливи:
FILENAME - current filename
FS - field separator
NF - number of fields
NR - current line number
OFMT - output format for numbers
OFS - output field separator
RS - record separator
$0 - entire input record
$n - nth field in the current record
Мариян Маринов <mm@yuhu.biz>
11. S e d & A w k
Вградени променливи:
ARGC - number of arguments on the command
line
ARGV - an array containing the list of cmd
arguments
CONVFMT - string conversion format for numbers
('%.6g)
ENVIRON - an array containing the list of
environment variable
FNR - current line field number
RT - the text matched by RS
Мариян Маринов <mm@yuhu.biz>
12. `
S e d & A w k
Обработване на информацията с awk
BEGIN {}
{}
END {}
Прости примери с awk:
/pattern/ { ++x }
END { print “The pattern have been seen”$x”times.”}
{ total += $2}
END { print “Total column count is: “$total}
{ for (i=NF; i>=1;i--) print $i }
Мариян Маринов <mm@yuhu.biz>
13. `
S e d & A w k
Escape последователности
a
b
f
n
r
t
Мариян Маринов <mm@yuhu.biz>