AWK — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
 
(не показано 8 промежуточных версий этого же участника)
Строка 1: Строка 1:
Базовый синтаксис awk
+
'''Базовый синтаксис awk'''
 
  awk '<font color=blue>{action}</font>' filename
 
  awk '<font color=blue>{action}</font>' filename
  
Строка 5: Строка 5:
 
  awk '<font color=blue>/regex pattern/{action}</font>' filename
 
  awk '<font color=blue>/regex pattern/{action}</font>' filename
  
 +
 +
'''Примеры'''
  
 
Вывод всего содержимого файла
 
Вывод всего содержимого файла
Строка 13: Строка 15:
  
 
Вывод определённого столбца
 
Вывод определённого столбца
awk '<font color=blue>{print $3}</font>' filename
+
awk '<font color=blue>{print $3}</font>' filename
 +
 
 +
Вывод нескольких столбцов
 +
awk '<font color=blue>{print $1, $4}</font>' filename
 +
 
 +
Вывод последнего столбца
 +
awk '<font color=blue>{print $NF}</font>' filename
 +
 
 +
Вывод предпоследнего столбца
 +
  awk '<font color=blue>{print $NF-1}</font>' filename
 +
 
 +
Вывод строк начинающихся с буквы O
 +
awk '<font color=blue>/^O/</font>' filename
 +
 
 +
Вывод строк заканчивающихся буквой F
 +
awk '<font color=blue>/F$/</font>' filename
 +
 
 +
Вывод строк НЕ заканчивающихся буквой F
 +
awk '<font color=blue>! /F$/</font>' filename
 +
 
 +
Вывод всех строк содержащих io
 +
awk '<font color=blue>/io/</font>' filename
 +
 
 +
Вывод строк в которых значение 3го столбца меньше 40(столбец с цифрами)
 +
awk '<font color=blue>$3 <  40 { print $0 }</font>'
 +
 
 +
Если разделитель не пробел, как например в /etc/password, то можно указать разделитель столбцов с помощью -F
 +
awk -F ':' '<font color=blue>{print $1}</font>'
 +
 
 +
 
  
 
Вывести все хостнеймы(колонка 2) из строк которые начинаются с цифр(ипишек)
 
Вывести все хостнеймы(колонка 2) из строк которые начинаются с цифр(ипишек)
 
  awk '<font color=blue>/^[0-9]/{print $2}</font>' /etc/hosts
 
  awk '<font color=blue>/^[0-9]/{print $2}</font>' /etc/hosts

Текущая версия на 16:56, 30 июня 2022

Базовый синтаксис awk

awk '{action}' filename

Когда нужно найти текст, соответствующий конкретному шаблону, или же конкретное слово в тексте, команда принимает следующий вид

awk '/regex pattern/{action}' filename


Примеры

Вывод всего содержимого файла

awk '{print $0}' filename

Вывод всего содержимого файла с нумерацией строк

awk '{print NR,$0}'

Вывод определённого столбца

awk '{print $3}' filename

Вывод нескольких столбцов

awk '{print $1, $4}' filename

Вывод последнего столбца

awk '{print $NF}' filename

Вывод предпоследнего столбца

 awk '{print $NF-1}' filename

Вывод строк начинающихся с буквы O

awk '/^O/' filename

Вывод строк заканчивающихся буквой F

awk '/F$/' filename

Вывод строк НЕ заканчивающихся буквой F

awk '! /F$/' filename

Вывод всех строк содержащих io

awk '/io/' filename

Вывод строк в которых значение 3го столбца меньше 40(столбец с цифрами)

awk '$3 <  40 { print $0 }'

Если разделитель не пробел, как например в /etc/password, то можно указать разделитель столбцов с помощью -F

awk -F ':' '{print $1}'


Вывести все хостнеймы(колонка 2) из строк которые начинаются с цифр(ипишек)

awk '/^[0-9]/{print $2}' /etc/hosts