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

Материал из megapuper
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 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
  
 +
 +
'''Примеры'''
  
 
Вывод всего содержимого файла
 
Вывод всего содержимого файла
Строка 24: Строка 26:
 
   awk '<font color=blue>{print $NF-1}</font>' filename
 
   awk '<font color=blue>{print $NF-1}</font>' filename
  
Вывод строк начинающихся с буквы A
+
Вывод строк начинающихся с буквы O
 
  awk '<font color=blue>/^O/</font>' filename
 
  awk '<font color=blue>/^O/</font>' filename
  
Вывод строк заканчивающихся с буквы F
+
Вывод строк заканчивающихся буквой F
 
  awk '<font color=blue>/F$/</font>' filename
 
  awk '<font color=blue>/F$/</font>' filename
  
Строка 39: Строка 41:
 
  awk '<font color=blue>$3 <  40 { print $0 }</font>'
 
  awk '<font color=blue>$3 <  40 { print $0 }</font>'
  
 
+
Если разделитель не пробел, как например в /etc/password, то можно указать разделитель столбцов с помощью -F
 +
awk -F ':' '<font color=blue>{print $1}</font>'
  
  

Текущая версия на 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