Использование Linux AWK Command

 
Сущность
AWK является чтение файла строка за строкой, в качестве разделителя по умолчанию пространств на каждую строку ломтиками, разрезать части , то различные оценки
AWK рабочего процесса такова , что: есть чтение «\ п» разделены новой строки запись , и записи в указанном поле разделитель в области, область заполнена, то все домены , $ 0, $ 1 представляет собой первое поле, $ п обозначает п-е поле. Сепаратор поля по умолчанию является "пустой ключ" или "[Tab] Кнопка"
 
Форма команды AWK:
AWK [-F | -f | -v] Бегин {} // { 1 ; 2 КОНЕЦ {}} 'File
 [-F | -f | -v] Большой параметр, -F указать разделитель, сценарий вызывает -f, -v определить значение переменного = Var
«» опорного блока
BEGIN блока кода инициализации до обработки каждой строки коды инициализации, основной является ссылкой на глобальную переменную, FS сепаратор , расположенный
// блок сопоставления может быть строкой или регулярным выражением
{} кода команды блок, включающий в себя одну или несколько команд
, несколько команд , разделенных точкой с запятой
конца конца блока, на блок коды после того, как каждая строка обрабатывается снова выполняется, в основном Окончательный расчет или выходной конец сводной информации
 
особых точек:
$ 0 представляет всю линию тока
$ 1 в строку первого поля
NF числа поля переменной
номер запись NR для каждой строки, и больше записей файлов приращения
FNR и NR похоже, но больше документации не увеличиваются каждый файл с самого начала
\ Вкладка т
\ п новая строка
определяется сепаратором FS НАЧАТЬ
входной разделитель записей RS, по умолчанию разрыв строки (то есть, строка за строкой, основан ввод текста)
~ матч не является точным по сравнению с сравнения ==
! ~ Несовпадающие , неточное сравнение
== равно, должно быть все равно, точное сравнение
! = не равно, точное сравнение
&& логического и
|| или логика
представляет собой один или более + 1 матч
/ [0-9] [0-9] + / две или более цифровой
/ [0-9] [0-9] * / или один или несколько цифровых
FileName имени файла
ФСА вывод разделитель полей, по умолчанию пространство, вкладка и т.д. к
выходу записи ПРС разделитель, по умолчанию символа новой строки, то есть, результат обработки выводится в строку экрана по линии
-F «[: # /]» определяет три разделитель
 
печати & $ 0
печати обозначенного содержания печати в основном AWK команды
AWK «{печать}» / и т.д. / пароль == AWK '{печати  $ 0}' / и т.д. / пароль
AWK «{печать„“}» / и т.д. / пароль // PASSWD содержимое не выводится, но выход того же количества пустых строк, и далее объясняется AWK обработки текста построчно
AWK «{печати„а“} » / и т.д. / ПАРОЛЬ // такое же количество выходных линий, только одна строки письма
AWK -F ":" '{} 1 Печать $.' / и т.д. / PASSWD
AWK -F: '$ {. Печать 1; 2 печати $}' / и т.д. / ПАРОЛЬ // первые два поля каждой строки, выходной ветви, дальнейшее понимание текстовой строки по линии обработки
AWK -F: «{печать $ 1 , $ 3, $ 6}» ФСУ = «\ т» / и т.д. / пароль // поле вывода 1, 3,6 и вкладки как разделитель
 
-f указанной файл скрипт
файл AWK -f script.awk
Бегин {
пФ = ":"
}
. {} // Печатают эффекты 1 $ AWK -F ":" «{печать $ 1} 'являются одинаковыми, за исключением разделителей FS указывается в коде самой
 
AWK' BEGIN {X = 0} / ^ $ / {X + = 1} END {печать "Я нахожу", X, "пустые строки. "}» тест
я найти 4 пустых строк.
 Ls -l | AWK '! BEGIN { сумма = 0} / ^ d / {сумма + = $ 5} END {печать "общий размер", сумма} // вычислить размер файла
Общий размер 17487
 
-F указанный разделитель
$ 1 означает после указания сепаратора, первое поле, третье поле, 3 $ \ вкладка Т
один или несколько последовательных пробелов или вкладки видны как разделитель, т.е. множество пробелов видно
AWK - Ф. ":" '{Print $ 1.}' / и т.д. / PASSWD
AWK -F ":" '{печать $ 1 $ 3.}' / и т.д. / ПАРОЛЬ // $ 1 и $ 3 подключен к выходу, без перегородки.
AWK -F ":" «{печать $ 1, $ 3} '/ и т.д. / пароль // больше , чем запятой, $ 1 и $ 3 отделены друг от друга пространством
AWK -F ":"' {печать $ 1 "" $ 3} «/ и т.д. / пароль // вручную добавить между $ 1 и $ 3 разделенных пробелами
AWK -F ":" '{печати "Имя пользователя:" $ 1 "\ т \ т Uid:" $ 3}' / и т.д. / пароль // пользовательский выход 
AWK -F: '{печать NF} '/ Etc / пароль // отображение количества полей в строке
AWK -F: '{печать $ NF }' / и т.д. / пароль // значение каждого поля линий напечатанной NF
 AWK -F: 'NF == 4 { печать}' / и т.д. / пароль // отображение только 4 силовые линии
AWK -F: 'NF> 2 { печати $ 0}' / и т.д. / пароль // показывает количество полей в строке больше , чем 2
AWK '{печать NR, $ 0 }' / и т.д. / пароль // выход в каждой строке номер строки
AWK -F: '{печать NR, NF, $ NF, "\ т", $ 0}' / и т.д. / пароль // номер заказа печати строки, количество полей, значения полей и , наконец, вкладок, каждая строка
AWK -F: 'NR == 5 { печать}' / и т.д. / пароль // строчный 5.
AWK -F: '|| NR NR == == 5. 6} {Print' / и т.д. / // Показать ПАРОЛЬ . 5 и строка строка 6
маршрут -n | AWK '! = NR 1} {Print. не первая строка //
 
// блок сопоставления
// // чистый чистый символ соответствует символ не соответствует значению поля соответствует ~ @! !   Значения полей не совпадают ~ @ ~ / a1 | a2 / a1 значение поля соответствует или A2
AWK '/ MySQL /' / и т.д. / ПАРОЛЬ
AWK '/ MySQL / {Печать}' / и т.д. / PASSWD
AWK '/ MySQL / {Печать $ 0}' / ПАРОЛЬ // три результата / и т.д. инструкция , как
AWK '! / MySQL / {печати $ 0}' / и т.д. / пароль // выходная линия не соответствует MySQL
AWK '/ MySQL | почта / Печать {}' / и т.д. / PASSWD
AWK | / и т.д. / ПАРОЛЬ '! / MySQL почты / Печать} {'
AWK -F: «/ почта /, / MySQL / { печать} '/ и т.д. / пароль // соответствующий раздел
AWK' / [2] [7 ] [7] * / {печати $ 0} «/ и т.д. / пароль // согласования включает в себя 27 , чтобы начать с цифрами линии, например, 27,277, 2777 ...
AWK -F: '$ 1 ~ / почты / {. Печать $ 1}' / и т.д. / ПАРОЛЬ // $ 1 совпадает с указанным содержимым только показать.
AWK -F: '{если ($ 1 ~ / почты /) печать $ 1}' / и т.д. / пароль // же , как и выше
AWK -F: '$ 1 ~! / почта / {печать $ 1}' / и т.д. / пароль // несовпадение
AWK -F: '$ 1 ~ /        ! почта | MySQL / {печать $ 1}'/ И т.д. / The PASSWD
 
оператор ПЧ
для использования в {}, и сравнить содержимое с () в фигурных скобках
AWK -F: '{если ($ 1 ~ / почта /) печать $ 1}' / и т.д. / пароль // короткий
AWK -F: '{если ($ 1 ~ / почта /) {печать $ 1}}' / и т.д. / пароль / / полная запись
AWK -F: '{если ($ 1 ~ / почта /) {печать $ 1} еще {печать $ 2}}' / и т.д. / пароль // если ... еще ...
 
 
условное выражение
== =>! > = 
AWK -F ":" '$ 1 == "MySQL" {Печать $ 3.}' / и т.д. / The PASSWD 
AWK -F ":" '{. ЕСЛИ (. $ 1 == "MySQL") для печати $ 3}' / и т.д. / The PASSWD / / как указано выше
AWK -F ":" '! $ 1 = "MySQL" {печати $ 3}' / и т.д. / пароль // не равно
AWK -F ":" '$ 3 > 1000 {печати $ 3}' / и т.д. / пароль / / больше , чем
AWK -F ":" '$ 3 > = 100 {печати $ 3}'/ И т.д. / пароль // больше или равно
AWK -F ": '$ 3 <1 {печати $ 3}' / и т.д. / пароль // меньше
AWK -F ": '$ 3 <= 1 {печати $ 3}' / и т.д. / пароль // менее
 
логические операторы
&& ||
AWK -F: '. $ 1 ~ / почта / && $ 3 8 {Печать}.>' / и т.д. / ПАРОЛЬ // логика, $ соответствие почты и $ 3> 8..
AWK -F: '{IF (.. $ 1 ~ / почта / && $ 3> 8) Печать}' / и т.д. / PASSWD
AWK -F: «$ 1 ~ / почта / || $ 3> 1000 {печать} '/ и т.д. / пароль // логический или
AWK -F:' {если ($ 1 ~ / почта / || $ 3> 1000) печать} '/ и т.д. / пароль
 
вычисления значения
AWK -F:' . $ 3> 100 '/ и т.д. / PASSWD   
... AWK -F:' $ 3> 100 || $ 3 <5 '/ и т.д. / PASSWD 
.. AWK -F:' $ 3 + $ 4> 200 '/ и т.д. / PASSWD
AWK -F:' / MySQL | почта / {печать $ 3 + 10} '/ и т.д. / пароль // третье поле плюс 10 печати
AWK -F:' / MySQL / { печать $ 3- $ 4} '/ Etc / пароль // Вычитание
AWK -F: '/ MySQL / { печать $ 3 * $ 4}' / и т.д. / пароль // найти продукт
AWK '/ MemFree / {печать $ 2/1024}' / ргос / MemInfo // деление
AWK «/ MemFree / {Print Int ($ 2/1024)} ' / Proc / MemInfo // округление
 
выходного разделителя нефтесервисного
AWK' $. 6 ~ / плавник / || NR ==. 1 {Печать Н.Р., $. 4, $. 5, $. 6} «нефтесервисный = "\ Т" NetStat .txt
AWK '$ 6 ~ / WAIT / || {Печать. 1 == NR NR, $. 4, $. 5, 6} $' нефтесервисных = "\ Т" Netstat.txt       
// соответствие WAIT поле 6 выходная линия, в которой выходной сигнал каждой строки число, 4,5,6 поля, и вкладка с разделителями полей с использованием
 
выводит результат обработки в файл
код команды ① в выходном блоке непосредственно -n маршрута | AWK «= NR 1 {Версия для печати>„./fs“}!».  
② перенаправление вывода маршрута -n | AWK> ./fs' NR = 1 {печать}! '
 
форматированный вывод
NetStat -anp | AWK' {Printf " % -8s% -8s% -10s \ п", $ 1, $ 2, $ 3} '
Формат вывода Printf представляет
% форматированный вывод разделитель
длина -8 характер 8
сек представляет собой тип строки
Печать каждой строки из первых трех полей, первое поле указывает тип выходной строки (длина 8), второй выходной строковый тип поля (длина 8),
третье поле типа вывода строки (длина 10)
-anp в NETSTAT | '$ 6 == "Прослушивать" || NR 1 == {Printf "% -10S% -10S -10S% \ n-", $ 1, $ 2, $.} 3..' AWK
NetStat -anp |. AWK «== $ 6 "Прослушивать" || NR 1 == {Printf "% -3S -10S %%% -10S -10S \ n-", NR, $ 1, $ 2, $.} 3 '.
 
если заявление
AWK -F:' {если ($ 3> 100 ) Print "Large", а еще Print "Small"} '/ и т.д. / PASSWD
Малый
Малый
Малый
Большой
Малый
Малый
AWK -F:'. Бегин {A = 0, B = 0} {IF ($ 3> 100) {A ++; Печать " большой "} еще {B ++; печать" маленький "}} END {печать A," \ т», B} '/ И т.д. / The PASSWD
                                                                                                                  // ИД больше , чем 100, плюс 1, или B плюс 1
AWK -F: «{если ($ 3 <100) следующий; остальное печать}»/ и т.д. / пароль //小于100跳过,否则显示
AWK -F: 'BEGIN {= 1} {если (я <NF) печати NR, NF, я ++}' / и т.д. / пароль  
AWK -F : 'BEGIN {я = 1} {если (я <NF) {печать NR, NF} я ++}' / и т.д. / пароль
另一种形式
AWK -F: «{печать ($ 3> 100 "да":" нет «)} '/ и т.д. / пароль
AWK -F: '{печать ($ 3> 100 $ 3? ": \ tyes": $ 3 ": \ ТНО")}'/ и т.д. / пароль ,
 
а语句
AWK -F:' BEGIN {я = 1} { в то время как (г <NF) печати NF, $ I, I ++} '/ и т.д. / пароль
7 корень 1
7 х 2
7 0 3
7 0 4
7 корень 5
7 / корень 6
 
数组
NetStat -anp | AWK' NR ! = 1 {а [$ 6] ++} END {для (я в) печать я, "\ т", а [я]}»

. 1 9523    
9929. 1    
Слушающиеся 6.    
7903. 1    
3038 / cupsd 1.    
7913. 1    
10837. 1    
9833. 1    
 
приложения 1.
AWK -F: '{} из NF Print' helloworld.sh // выходного файла числового поля в строке
AWK -F: «{печать $ 1 , $ 2, $ 3, $ 4, $ 5} '5 перед тем helloworld.sh // выходные данные полей
AWK -F:' {печать $ 1 , $ 2, $ 3, $ 4, $ 5} 'ФСУ =' \ т «helloworld.sh // выход и первые пять полей , разделенных вывода вкладок
AWK -F: '{Печать NR, $ 1, $ 2, $ 3, $ 4, $ 5}' ФСУ = '\ т' helloworld.sh // Выход 5 перед тем вкладку-разделителями полей, номер строки и печати
 
приложение 2
AWK -F '[: #]' '{ печать NF}' helloworld.sh // указать несколько разделителей: #, выход номер строки в каждом поле
AWK -F '[: #]' «{напечатать $ 1, $ 2, $ 3, $ 4, $ 5, $ 6, $ 7 } 'ФСУ =' \ т 'helloworld.sh // вкладка разделителя поле несколько выходных
 
приложения 3.
AWK -F' [: # /] '' из NF} {Печать «// указанных три helloworld.sh разделители, и выходной сигнал каждой строки число полей
AWK -F '[: # /] ' '{печать $ 1, $ 2, $ 3, $ 4, $ 5, $ 6, $ 7, $ 8, $ 9, $ 10, $ 11, $ 12}' HelloWorld. ш // выходной мультиплексор с разделением табуляцией поля
 
применяется 4
вычисления / домашний каталог, размер обычного файла, БЗ в качестве единицы
Ls -l |! AWK «BEGIN { сумма = 0} / ^ d / {сумма + = $ 5} END {печать "общий размер:" , сумма / 1024, "КБ"} "
Ls -l | AWK '! BEGIN { сумма = 0} / ^ d / {сумма + = $ 5} END {печать "общий размер:", Int (сумма / 1024), "КБ"}' // INT округляет Это означает , что
 
приложение 5
статистического NETSTAT -anp СЛУШАТЬ состояние на количество соединений и количество CONNECT соответственно
NetStat -anp | AWK «$ 6 ~ / СЛУШАТЬ | Подключено / {сумма [$ 6] ++} END {для (я в сумме) PRINTF" % -10s% -6s% -3S \ п «я»,», сумма [я]} '
 
приложение 6
статистики / файлов домашней директории общего числа обычных пользователей сильно отличается?
Ls -l | !! AWK «NR = 1 && / ^ д / {сумма [$ 3] ++} END {для (я в сумме) Printf "% -6s% -5S% -3S \ N", я," »SUM [я]} '  
MySQL 199
корня 374
размера общего размера обычного файла в различных статистических данных пользователя / домашний каталог сколько?
Ls -l | !! AWK «NR = 1 && / ^ д / {сумма [$ 3] + = $ 5} END {для (я в сумме) Printf "% -6s% -5S% -3S% -2s \ п" , я, "", сумма [ я] / 1024/1024, "MB"} "
 


AWK «BEGIN {математикой = 0; анг = 0; ком = 0; Printf " LINENO № Название Math Английский Компьютер Total \ п"; Printf«----------------- ------------------------------------------- \ п "} {математика + = $ 3; анг + = $ 4; COM + = $ 5; Printf "% -8s% -7s% -7s% -7s% -9s% -10s% -7s \ п", NR, $ 1, $ 2, $ 3, $ 4, $ 5, $ 3 + $ 4 + $ 5} END {Printf «----------------------------------------------- ------------- \ п "; Printf "% -24s% -7s% -9s% -20s \ п"," Total: "математика, рус, ком; Printf" % - 24s% -7s% -9s% -20s \ п», "Среднее:" математика / NR, анг / NR, ком / NR}» test0
[корень @ LOCALHOST домой] # кошка test0
Marry 2143 78 84 77
Джек 2321 66 78 45
Том 48 2122 77 71
Mike 2537 87 97 95
Боб 2415 40 57 62
 

 

 

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

отwww.cnblogs.com/zhangrui153169/p/11506517.html