Linux - колонка перехвата в соответствии с условиями сложной командной AWK

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]#
Опубликовано 59 оригинальные статьи · вона похвала 2 · Просмотров 5571

рекомендация

отblog.csdn.net/LDR1109/article/details/102957643