Краткое введение
AWK является мощным инструментом анализа текста, особенно при работе с относительно хорошим форматом файла журнала, AWK, чтобы положить его просто читает файл строка за строкой, с пространством для разделителей по умолчанию (Вы можете также указать разделители) Каждый обработка линии среза.
грамматика
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
AWK рабочий
AWK рабочий процесс таков, что: чтение есть запись новой строки разделенных «\ п», а затем записывается в указанный разделитель полей в области, заполнить поле, $ 0 указывает на все домены в полной записи (это и регулярное совпадает аналогичный), $ 1 представляет собой первое поле, $ п обозначает п-е поля. Сепаратор поля по умолчанию является пространством, конечно, может быть указан разделитель.
Параметры Параметр Описание:
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令
-v var=value or --asign var=value
赋值一个用户定义变量。
Аналитический: -F указанный лист сепаратора толстой кишки каждая строка, выход первого среза и предпоследних промежуточных фрагментов, разделенных запятыми
//假设我们要输出supervisor这个程序的进程号 ,这个命令配合xargs可以方便于结束某些进程
ps -ef|grep 'supervisor'|awk '{print $2}'
//输出
1630
比如有如下文件ip.txt
1 134.102.173.43
2 134.102.173.43
3 134.102.171.42
4 134.102.170.9
要统计出现次数最多的IP可以利用以下shell脚本:
cat ip.txt | awk '{print $2}' | sort | uniq -c | sort -n -r | head -n 1
最后如果不加head这一组可以统计从多到少的列表
Разрешение:
AWK '{печать $ 5}': Низкий домен 5 доступа к данным (колонка 5)
сортировать: IP часть рода.
уник -c: печать количество каждого повторяющихся строк появляются. (И удалить дубликаты строк)
сортировать -n -r: расположены в порядке появления повторяющихся строк по убыванию.
головка -n 5: Возьмите пятерку IP
Встроенные переменные
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览的当前行中分片的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
Используется NF, если {печать $ (NF-1)} является предпоследним фрагмент печати
Далее, в качестве примера, мы сохраняем / и т.д. / пароль файл в demo.txt.
root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
Пример:
`` `
$ AWK -F ':' '{печать $ 1, $ (NF-1)}' demo.txt
## 函数
awk还提供了一些内置函数,方便对原始数据的处理。
ToUpper (): для символов в верхний регистр.
TOLOWER (): символы нижнего регистра.
длина (): возвращает длину строки.
зиЬзЬг (): возвращает подстроку.
грех (): синусоидальной.
сов (): косинус.
SQRT (): квадратный корень.
Rand (): случайное число.
示例:
$ AWK -F ':' '{печать ToUpper ($ 1)}' demo.txt
## 条件表达式
awk允许指定输出条件,只输出符合条件的行。
Только выход из строки, содержащей USR.
$ AWK -F ':' '/ USR / {печать $ 1}' demo.txt
Выход Одд линия
$ AWK -F ':' 'NR% 2 == 1 {печать $ 1}' demo.txt
корень
бен
синхронизации
Выход третьего ряда после ряда
$ AWK -F ':' 'NR> 3 {печать $ 1}' demo.txt
SYS
синхронизации
Следующий пример выходного значения равна указанному первой строке поля
$ AWK -F ':' '$ 1 == "корень" {печать $ 1}' demo.txt
корень
$ AWK -F ':' «$ 1 == "корень" || $ 1 == "бин" {печать $ 1}»demo.txt
корень
бен
## if 语句
awk提供了if结构,用于编写复杂的条件,if结构还可以指定else部分
Выход первого поля первого символа строки больше т.
$ AWK -F ':' '{если ($ 1> "м") печать $ 1}' demo.txt
корень
SYS
синхронизации
Она включает в себя то еще
$ AWK -F ':' «{если ($ 1> "м") печать $ 1; еще печать "---"}»demo.txt
корень
---
---
SYS
синхронизации
`` `
Некоторые примеры этой статьи исходит от учителя Его Xuefeng статьи