Использование Linux в AWK инструмент
каталог
AWK
AWK является мощным инструментом анализа текста, по сравнению с Grep найти, редактировать СЭД из, AWK анализа его данных и генерации отчетов, особенно сильна. Awk, чтобы просто прочитать файл строка за строкой, в качестве разделителя пространств по умолчанию каждый срез строки, а затем вырезать часть из множества анализа. AWK является процессор линии, то преимущество по сравнению с растровой обработки, при работе с большими файлами, не появляются из памяти или проблемы обработки медленно, как правило, используется для форматирования текстовой информации
AWK процесс: последовательно обработки каждой строки, а затем выводить
Использование AWK:
Параметр AWK 'BEGIN {} // {действие1; action2} END {} имя файла
Параметры:
- -F указать разделитель
- -f вызова сценария
- -v определенные переменные
Начало {} инициализатор блок, до обработки каждой строки, код инициализации, используется в основном глобальной переменной, сепаратор снабжен FS
// блок сопоставления может быть строкой или регулярным выражением
{} Код команды блок содержит одну или несколько команд, несколько команд, отделившиеся
END {} конец кодовых блоков, каждый блок кода после того, как обработка строк выполняется снова, в основном, рассчитывается окончательный переваривать информации или выходной конец
Пример: Общее количество корневой линии AWK 'BEGIN {Х = 0} / корень / {Х + = 1} END {Печать "Я найти", X, "корневые линии"}' / и т.д. / пароль Статистика / и т.д. / пароль файл содержит
AWK символов означает:
- $ 0 представляет всю текущую строку
- $ 1 в строке первого поля
- NF поле переменное число
- NR номер записи каждой строки, мульти-файл приращение записи
- FNR и NR похоже, но больше документации не увеличивается каждый файл с самого начала
- \ T Tab
- \ N новой строки
- FS НАЧАТЬ определение разделителя
- RS запись входной разделитель по умолчанию разрыв строки (то есть, строка за строкой, основан ввод текста)
- ~ Содержит
- ! ~ Не включено
- == равно, должно быть все равно, точное сравнение
- ! = Не равно, точное сравнение
- && Логическое И
- || логическое ИЛИ
- + Обозначает по меньшей мере один матч, или
- / [0-9] [0-9] + / две или более цифровых
- / [0-9] [0-9] * / или один или более цифровых
- OFS разделитель выходных полей, по умолчанию пространство, оно может быть изменено на другое
- ПРС выходных записей, новая строка по умолчанию, то есть, результат обработки выводится в строку экрана по линии
- -F [: # /] определяет три разделителя
Печать Печать
- печать основной команды AWK для печати определенного контента, вы можете также использовать Printf
- AWK '{печать}' / и т.д. / пароль == AWK '{печати $ 0}' / и т.д. / пароль
- AWK «{Печать„“}» / и т.д. / пароль PASSWD содержание не выводит, но на выходе из того же числа пустых строк и далее объясняется AWK текста процесса строка за строкой
- AWK «{печать„а“}» / и т.д. / пароль на такое же количество выходных линий, только одна строка письма
- AWK -F: '{печать $ 1}' / и т.д. / пароль == AWK -F ":" '{печать $ 1}' / и т.д. / пароль
- AWK -F: '{печать $ 1 $ 2}' поле ввода 1, нет промежуточного раздела
- AWK -F: '{печать $ 1, $ 3, $ 6}' ФСУ = "\ т" / и т.д. / пароль 1,3,6 поле вывода, вкладка как разделитель
- AWK -F: '{печать $ 1; печать $ 2}' / и т.д. / пароль поле ввода 2, разрывы строк
- AWK -F: '{печать $ 1 "**" печать $ 2}' / и т.д. / пароль поля ввода 1, к промежуточной перегородке **
- AWK -F: '{печати "Название:" $ 1 "\ TID:" $ 3}' / и т.д. / пароль выходных полей пользовательского формата 1,2
- AWK -F: «{Печать NF}» / и т.д. / пароль каждое поле номер строки дисплея
- AWK -F: «NF> 2 {печати}» / и т.д. / пароль количество линий на поле больше, чем печатная 2
- Строка 5 'NR == 5 {печать}' / и т.д. / пароль распечатать и т.д. / пароль файл /: AWK -F
- AWK -F: 'NR == 5 | NR == 6 {печать}' / и т.д. / пароль распечатать / и т.д. строки 5 и 6 строки PASSWD файл /
- AWK -F: '! NR = 1 {печать}' / и т.д. / пароль не показывает первую строку
- AWK -F: '{печати> "1.txt"}' / и т.д. / пароль выходной файл
- AWK -F: '{печать}' / и т.д. / пароль> 2.txt вывод в файл перенаправления
Символьные матчи
- AWK -F: «/ корень / {печать}» / и т.д. / пароль печатает файл из строк, содержащиеся в корне
- OK '/' $ A '/ {печать}' / и т.д. / пароль файл содержит распечатывают переменную $ A: AWK -F
- AWK -F: «/ корень / {печать}!» / и т.д. / пароль печатает файл из строк не имеет корня
- AWK -F: «/ корень | Том / {печать}» / и т.д. / пароль печатает файл из строк, содержащиеся в корневом каталоге или томе
- AWK -F: '/ почта /, MySQL / {печать} тест распечатка строка в файле, содержащая почту * MySQL * представляет ноль или любое количество символов
- AWK -F: '/ ^ [2] [7] [7] * / {печать} пробной печати из файла в начало строки 27, и тому подобное, как 27,277,27gff
- AWK -F: «$ 1 ~ / корень / {печати}» / и т.д. / пароль файл для распечатки первой линии поля является корнем
- AWK -F: «($ 1 ==„корень“) {Печать}» / и т.д. / пароль файл для распечатки первой линии поля является корнем, что эквивалентно выше
- AWK -F: «! $ 1 ~ / корень / {печати}» / и т.д. / пароль файл для распечатки первой линии поля не является корень
- AWK -F: «(! $ 1 =„корень“) {печать}» / и т.д. / пароль файл для распечатки первой линии поля не является корнем, что эквивалентно выше
- AWK -F: '$ 1 ~ / корень | FTP / {печать}' / и т.д. / пароль файл для печати из корня или первой линии поля FTP
- AWK -F: '($ 1 == "корень" || $ 1 == "FTP") {Печать}' / и т.д. / пароль файл печати из первого поля или FTP корневой линии, что эквивалентно выше
- AWK -F: «! $ 1 ~ / корень | FTP / {печать}» / и т.д. / пароль файл для распечатки первой линии поля не корень или нет FTP
- AWK -F: «(!! $ 1 =„корень“|| $ 1 =„FTP“) {Печать}» / и т.д. / пароль файл для распечатки первой линии поля не является корнем или нет FTP, что эквивалентно выше
- AWK -F: '{если ($ 1 ~ / почта /) {печать $ 1} еще {печать $ 2}}' / и т.д. / пароль Если первое поле почты, а затем распечатать первое поле, или напечатать второе поле
форматированный вывод
AWK '{Printf "% -5S% .2d", $ 1, $ 2}' тест
- Printf представление выходного формата
- % Форматированный вывод разделитель
- -8 обозначает длину 8 символов
- s представляет собой тип строки, d представляет собой десятичное
Например:
1 , дисплей / и т.д. / PASSWD содержится в строке корневой AWK « / корень / » / и т.д. / PASSWD 2 , чтобы: Отдельно, дисплей / и т.д. / PASSWD в первом и седьмом поле каждой строки AWK -F " : " ' {Печать $ 1, $ 7..} ' / и т.д. / пароль или AWK ' Бегин {к FS =": "} {Печать $ 1, $ 7..} ' / и т.д. / PASSWD 3. , чтобы: отдел ют, дисплей / и т.д. / PASSWD , содержащий корень первый и второй ряды семи полей AWK -F " : " ' / корневой / {Печать $ 1, $} 7. ' / и т.д. / PASSWD 4. , чтобы: отдел ют, дисплей / и т.д. / -FОтдельно, дисплей / и т.д. / 1 и 7 к началу силовых линий корневой PASSWD AWK « : » « / ^ корень / {Печать $ 1, $ 7.} » / и т.д. / PASSWD 5. , в следующем порядке: Отдельно, дисплей / и т.д. / PASSWD в третьем поле больше , чем 999 в первых и седьмых столбцах строки AWK -F " : " '$ 3> 999 {Печать $ 1, $ 7.} ' / и т.д. / PASSWD 6. , чтобы: отдел ют, дисплей / и т.д. / 1 - го и 7 - го поля в PASSWD седьмом поле содержит Баш строки AWK -F " : " '$ 7 ~ "баш" {Печать $ 1, $ 7.} ' / и т.д. / PASSWD 7. , в следующем порядке: отдел ют, дисплей / и т.д. / 1 и 7, PASSWD в седьмом поле не содержит Баш строки поле AWK -F " :" '!. 7 $ ~ "NOLOGIN" {Печать $ 1, $ 7.} ' / И т.д. / PASSWD 8. , Чтобы: Раздельная дисплей $ 3 > 999, и седьмое поле содержит Баш первые и седьмые столбцы строки AWK -F " : " ' $ 3> 999 && $ 7 ~." Баш "{Печать $ 1, $ 7.} ' / и т.д. / PASSWD 9. , в следующем порядке: отделяют дисплей $ 3 > 999 или седьмое поле содержит Баш строки 1 и 7 поле AWK -F " : " ' $ 3> 999 || $ ~ 7 "Баш" 1 {Print $, $} 7.... ' / и т.д. / ПАРОЛЬ