Познаването на основите на командата „awk“ е много важно, когато става въпрос за ефективна обработка на данните и тази публикация обхваща ключовите характеристики на командата „awk“. Нека първо проверим синтаксиса:
$ awk [опции] [файл]Някои от често използваните опции са дадени в таблицата по-долу:
Вариант | Описание |
-F | За да зададете файлов разделител |
-е | Посочете файла, който съдържа скрипта “awk” |
-v | За да присвоите променлива |
Нека да разгледаме няколко примера за използването на командата “awk” и за демонстрация направих текстов файл с името на testFile.текст:
1. Как да отпечатате колона на файл с командата awk?
Командата “awk” може да се използва за получаване на конкретна колона от текстовия файл. За да отпечатате съдържанието на файла:
$ cat testFile.текст
Сега, за да отпечатате втората колона на файла, използвайте:
$ awk 'print $ 2' testFile.текст
За да отпечатате повече от едно поле, използвайте командата:
$ awk 'print $ 1, $ 2, $ 3' testFile.текст
Ако не използвате запетая „,“, изходът ще бъде без интервали:
$ awk 'print $ 1 $ 2 $ 3' testFile.текст
2. Как да използвам регулярния израз с команда awk:
За да съпоставим низовете или който и да е израз, използваме наклонени черти „//“, например, ако искате да отпечатате имената на хората, които изучават „История“, използвайте:
$ awk '/ History / print $ 2' testFile.текст
Резултатът ясно показва, че само „Сам“ и „Томи“ учат курса „История“.
3. Как да използваме релационния израз с командата “awk”:
За да съответства на съдържанието на конкретно поле, може да се използва релационен израз. За да съпоставите всеки низ или израз срещу поле, посочете полето и използвайте оператора за сравнение “~” с модела, както е представен в следната команда:
$ awk '$ 3 ~ / is / print $ 2' testFile.текст
Горният изход показва всяко поле в колона 2 срещу всяко поле, което съдържа „е“ в колона 3.
И за да получите обратния изход на горната команда, използвайте „! ~ ”Оператор:
$ awk '$ 3! ~ / is / print $ 2 'testFile.текст
За сравнение можем да използваме и оператори като по-големи от „>“ и по-малки от „<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.текст
В резултата са отпечатани имената на хора, които са получили оценки над 70.
4. Как да използвам шаблона за диапазон с команда awk:
Диапазон може да се използва и за търсене; просто използвайте запетая “,”, за да отделите диапазона, както е представено в посочената по-долу команда:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.текст
Резултатът показва обектите от диапазона от „Joel“ до „Marlene“ от колона 2. Можем да използваме двойния знак за равенство "==", за да определим диапазон; вижте примера по-долу:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.текст
Резултатът показва имената на хората от колона 2 за диапазона от марки „70 до 80“ от колона 4.
5. Как да комбинирам шаблон с помощта на логически оператор:
Използването на логически оператори като ИЛИ “||,” И “&&” ви позволява да комбинирате модели за търсене. Използвайте следната команда
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.текст
Горната команда отпечатва имената на хората спрямо четвъртото поле, по-значимо от 80 и шестото поле, по-голямо от 0.4. И само два записа изпълняват условието.
6. Специалните изрази на командата awk:
Има два специални израза „НАЧАЛО" и "КРАЙ”:
НАЧАЛО: За да извършите действие преди обработката на данните
END: За да извършите действие след обработката на данните
$ awk 'НАЧАЛО печат „Обработката е започнала“; отпечатайте $ 2; END print "Обработката приключи" 'testFile.текст
7. Полезната вградена променлива на команда awk:
Командата awk има различни променливи, които помагат при обработката на данни:
Променлива | Описание |
NF | Той дава броя на полетата в данните |
NR | Той дава номера на текущия запис |
ИМЕ НА ФАЙЛ | Показва името на файла, който в момента се обработва |
FS и OFS | Разделител на полето и изходен разделител на полето |
RS и ORS | Разделя разделителя на записа и изходния запис |
Например:
$ awk 'END print "Името на файла е" FILENAME "има" NF "полета и" NR "записи"' testFile.текст
Използваме „END“, но ако използвате „BEGIN“, изходът ще даде 0 полета и 0 записа.
8. Как да смените разделителя на записи:
Разделителят по подразбиране в записа обикновено е интервал; ако има запетая „,“ или точка „.”Като разделител на поле, използвайте опцията„ FS ”заедно с разделителя.
Нека имаме друг файл, където полетата с данни са разделени със запетая двоеточие „:“:
$ cat testFile2.текст$ awk 'BEGIN FS = “:” print $ 2' testFile2.текст
Тъй като разделителят на файла е двоеточие, но командата „awk“ дори е полезна за файлове като този, просто използвайте опцията „FS“.
Може да се използва и „-F“:
$ awk -F “:” 'print $ 2' testFile2.текст
Разделителят на записи по подразбиране е „нов ред“ и за да зададете разделителя на записи на „:“, използвайте:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.текст
9. Awk Действия:
Awk действията са малки програми, които са заобиколени от скоби „“ и имат повече от един оператор, разделен с точка и запетая „;“.
Най-използваният израз с командата “awk” е изразът “print”. Например, за да отпечатате текст с всеки запис, използвайте текстов низ в кавички:
$ awk '„The is a field,“ $ 2' testfile.текст
Нека извършим проста операция за сумиране, използвайки awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, sum' testFile.текст
10. Създаване на awk програма:
Нека започнем с програмирането "awk", програмирането, дадено по-долу, просто прави умножение:
НАЧАЛОi = 2
докато (j<4)
отпечатайте „Умножението на 2 с„ j “е„ i * j;
j++
Запазете програмата под името „myCode.awk”И за да го стартирате, отворете терминала и напишете:
$ awk -f myCode.awkЗаключение:
Командата “awk” е удобна команда за обработка, сканиране на данни от текстови файлове, като например отделяне на всяко конкретно поле на файл; използваме командата “awk”. Улеснява търсенето на каквото и да е във всякаква форма или модел от текстовите файлове. В това ръководство разбираме основите на командата “awk” и нейното използване. Командата “awk” проверява данните, генерира отчети и дори анализира файлове. Използването на прости команди “awk” също така позволява на потребителите да пишат малки програми, за да обработват данните по-ефективно.