awk команда в Linux

awk
е една от най-мощните и гъвкави команди в Linux. Тя се използва основно за обработка на текстови файлове и анализ на данни. awk
е особено полезна при работа с редове и колони в текстови файлове, като CSV, логове или конфигурационни файлове.
В тази статия ще разгледаме:
- Какво е
awk
и как работи 🧠 - Основен синтаксис и структура 🧱
- Примери от реалния свят 📁
- Често използвани шаблони и команди 🔧
- Практически съвети и трикове ✨
1. Какво е awk
? 🤔
awk
е език за обработка на шаблони. Името идва от инициалите на създателите му — Aho, Weinberger, и Kernighan. Той е създаден през 70-те години, но и до днес е незаменим инструмент за администратори и програмисти.
Основната идея зад awk
е проста: чете входни редове от файл или команда, разделя ги на полета и прилага логика според шаблон.
2. Как работи awk
? ⚙️
awk
работи по следния начин:
- Чете входен текст ред по ред.
- Разделя всеки ред на полета (по подразбиране по интервали).
- Изпълнява действия върху съвпадащи шаблони.
Примерна команда:
awk '{ print $1 }' файл.txt
Тук awk
отпечатва първото поле от всеки ред на файла.
3. Синтаксис на awk
🧱
Основният синтаксис е:
awk 'шаблон { действие }' файл
- Шаблон – Условие, по което се избира ред (може да се пропусне).
- Действие – Какво да се направи с реда.
Полезни променливи:
Променлива | Значение |
---|---|
$0 | Целият ред |
$1 , $2 | Първо, второ поле и т.н. |
NR | Номер на текущия ред |
NF | Брой на полетата в реда |
4. Примери от практиката 📚
Нека разгледаме някои реални примери.
4.1. Извличане на колона
awk '{ print $2 }' данни.txt
📌 Показва второто поле от всеки ред.
4.2. Филтриране по стойност
awk '$3 > 100 { print $1, $3 }' продукти.txt
📌 Показва име и цена на продукти, по-скъпи от 100.
4.3. Подсчитане на редове
awk 'END { print NR }' файл.log
📌 Показва броя на редовете във файл.
4.4. Преобразуване на текст
awk '{ print toupper($0) }' вход.txt
📌 Преобразува всеки ред в главни букви.
5. Разделяне по различен разделител 🔣
По подразбиране, awk
разделя по интервали или табулации. Можем да зададем друг разделител с опцията -F
.
awk -F',' '{ print $1 }' файл.csv
📌 Разделя редовете по запетая и показва първото поле.
Можем и ръчно да настроим разделителя в самия скрипт:
awk 'BEGIN { FS=":" } { print $2 }' файл.txt
6. BEGIN и END блокове ⏱️
Тези блокове се използват за код, който се изпълнява преди или след обработката.
awk 'BEGIN { print "Списък на служители:" } { print $1 } END { print "Край" }' служители.txt
📌 Това ще добави заглавие и финален ред около резултатите.
7. Изчисления с awk
➕➖
awk
поддържа аритметични операции:
awk '{ сума += $2 } END { print "Обща стойност:", сума }' покупки.txt
📌 Сумира всички стойности във втората колона.
Можем и да добавяме нови колони:
awk '{ с_ДДС = $2 * 1.20; print $1, с_ДДС }' продукти.txt
📌 Добавя колона с цена и 20% ДДС.
8. Условни конструкции 🔍
Можем да използваме if
, else
и други конструкции:
awk '{ if ($3 >= 50) print $1, "ОК"; else print $1, "НЕДОСТАТЪЧНО" }' стоки.txt
📌 Отпечатва статус според стойността в трета колона.
9. Цикли и масиви 🔄
С awk
можем да използваме и масиви:
awk '{ брой[$1]++ } END { for (име in брой) print име, брой[име] }' имена.txt
📌 Преброява колко пъти се среща всяко име.
10. Използване на awk в комбинация с други команди 🔗
awk
често се използва с grep
, sort
, cut
, и други инструменти.
Пример:
ps aux | awk '$3 > 10 { print $1, $3, $11 }'
📌 Показва потребители и команди на процеси с над 10% CPU.
11. awk скриптове 📜
Вместо команден ред, можете да пишете цели awk
скриптове:
#!/usr/bin/awk -f
BEGIN {
FS = ",";
print "Име | Възраст"
}
{
print $1 " | " $2
}
END {
print "Край на файла"
}
Запишете това в скрипт.awk
, и изпълнете:
awk -f скрипт.awk данни.csv
12. awk срещу sed 🥊
И двете команди работят с текст. Но awk
е по-подходяща за анализ, докато sed
— за трансформация.
Команда | Подходяща за |
---|---|
awk | Обработка по колони |
sed | Търсене и подмяна |
13. Практически съвети 🧠
- Използвайте
-F
за коректен разделител. - Пробвайте командите с малки файлове.
- За сложна логика използвайте BEGIN и END.
- Съхранявайте често използвани шаблони като скриптове.
Заключение 🏁
awk
е мощен инструмент, който изглежда прост, но може да направи много. От обикновено извличане на данни до сложна логика — awk
може всичко. След като разберете основите, ще спестите часове ръчна работа.
Независимо дали обработвате CSV файлове или логове от сървър, awk
винаги е добър избор. Съчетайте го с други команди и ще отключите истинската му сила.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut