AWK командной строки с усеченным столбцов сложных условиях
Синтаксис команды : AWK « Состояние 1 {1} операция условие 2 {операции} 2 ... » имя_файла
Команда Условия :
Обычноиспользуя выражение отношения как условие
х> 10 судейявляется ли переменная х больше 10
х> = 10 определяет, больше ли переменная Оно равно 10
X <= 10 определяетявляется ли переменная меньше или равна 10 команд действия :
выход форматирования ({п Printf $}, представляет собой п-й столбец; $ п представляет собой п-й столбец)
Отчетдвижении управления команда действие : представляет собой сложную команду AWK , выполнять сложные операции программирования внутри.
Пример:
[root@192 cut]# cat score.txt
Id Name Gender Score
1 zhangsan M 90
2 lisi M 88
3 wangwu M 98
4 zhaoliu N 97
5 NangongYi M 100
Пример: использовать AWK формат вывода команды столбец содержание 2,4
[root@192 cut]# awk '{printf $2 "\t" $4 "\n"}' score.txt
Name Score
zhangsan 90
lisi 88
wangwu 98
zhaoliu 97
NangongYi 100
[root@192 cut]#
Примечание: AWK экстракционная колонна, которая не извлечь второй и четвертый столбец первой строки, а затем извлечь второй и четвертый столбец второго ряда, а затем второй и четвертой колонке третьей строки, до конца текста.
Пример: Я хочу, чтобы получить дисковое пространство текущей корневой системы
[root@192 cut]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/sda3 17G 2.6G 14G 17% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 985M 40M 896M 5% /boot
A、先提取df -h 命令输出的第一行
[root@192 cut]# df -h | grep sda3
/dev/sda3 17G 2.6G 14G 17% /
[root@192 cut]#
B、再提取A结果的第五列
[root@192 cut]# df -h | grep sda3 | awk '{print $5}'
17%
[root@192 cut]#
C、以”%”为分隔符,获取第一个元素
[root@192 cut]# df -h | grep sda3 | awk '{print $5}' | cut -d "%" -f 1
17
[root@192 cut]#
НАЧАТЬ
Роль: состояние, только для удовлетворения НАЧАТЬ это условие перед началом выполнения. Он сказал, что перед любым выходом, содержание выходного после НАЧАТЬ. Затем обработка других действий.
实例: AWK 'BEGIN {Printf "это новое начать! \ П"} {Printf $ 2 "\ т" $ 4 "\ п"}' score.txt
[root@192 cut]# awk 'BEGIN {printf "this is new begin!\n"} {printf $2 "\t" $4 "\n"}' score.txt
this is new begin!
Name Score
zhangsan 90
lisi 88
wangwu 98
zhaoliu 97
NangongYi 100
[root@192 cut]#
Так НАЧАТЬ роль в конце концов, где? Призри: ФС встроенные переменные: определить Сепаратор
действия: указать разделитель
Примеры: Получить все пользователя несистемной из PASSWD файла - кошки / и т.д. / пароль | Grep "/ бен / Баш" | AWK '{FS = ":"} {Printf $ 1 "\ т" $ 3 "\ п"}'
[root@192 cut]# cat /etc/passwd | grep "/bin/bash" | awk '{FS=":"} {printf $1 "\t" $3 "\n"}'
root:x:0:0:root:/root:/bin/bash
user1 500
user2 501
user3 502
[root@192 cut]#
Тщательное наблюдение: Мы обнаружили, что первая линия также выход из. Почему это? Оригинал, AWK считывается первым в первой строке данных, а затем, выполняя операцию команды.
Примеры: Получить все пользователя несистемной из файле паролей и удалением первой строки - кошки / и т.д. / пароль | Grep «/ bin / Баш» | AWK «BEGIN {FS =„:“} {Printf $ 1„\ т“ $ 3 "\ п"} "
[root@192 cut]# cat /etc/passwd | grep "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t" $3 "\n"}'
root 0
user1 500
user2 501
user3 502
[root@192 cut]#
Примечание:
1, AWK по умолчанию разделитель способен определить «пространство», «Вкладки», но, в действительности, мы видим , разделители, может быть больше , чем это, мы нуждаемся в реальной ситуации, будет указано, что когда на ФС используется, он используется для указания команды переменной AWK разделителя.
2, НАЧАТЬ представляет собой первую линию перед чтением данных, первую операцию записи сепаратора, то обработка снова, таким образом , что первые данные строки, она была обработана. Руководство по сегментации, общие и FS сосуществуют.
КОНЕЦ
Роль: В команде выполняется, выход END содержания символов определенно.
Пример: Из score.txt файла, чтобы получить второй и четвертый столбец и окончательный вывод "The End" - AWK 'END {PRINTF "Конец \ п"} {PRINTF $ 2 "\ т" $ 4 "\ п"}' score.txt
[root@192 cut]# awk 'END {printf "The End\n"} {printf $2 "\t" $4 "\n"}' score.txt
Name Score
zhangsan 90
lisi 88
wangwu 98
zhaoliu 97
NangongYi 100
The End
[root@192 cut]#
Операторы отношения
Примеры: Получить пользовательский счет 100 баллов из файла score.txt
A、过滤掉不用的行 cat score.txt | grep -v Name
[root@192 cut]# cat score.txt | grep -v Name
1 zhangsan M 90
2 lisi M 88
3 wangwu M 98
4 zhaoliu N 97
5 NangongYi M 100
[root@192 cut]#
B、对第4列运算,结果输出第2列 cat score.txt | grep -v Name | awk '$4>=100 {printf $2 "\n"}'
[root@192 cut]# cat score.txt | grep -v Name | awk '$4>=100 {printf $2 "\n"}'
NangongYi
[root@192 cut]#