20 Практични AWK Примера за Обработка на CSV, Логове и Текст

20 Практични AWK Примера за Обработка на CSV, Логове и Текст

AWK е мощен инструмент за обработка на текстови данни, който може да спести часове ръчна работа. В тази статия ще разгледаме 20 готови за употреба примера за работа с CSV файлове, логове и текст. Всички примери са директно копираеми! 🚀


Съдържание

📌 Защо AWK?

  • Бърз – обработва големи файлове за секунди. ⚡
  • Гъвкав – работи с CSV, логове, текст и др. 📂
  • Мощен – поддържа сложни операции като филтриране, агрегиране и трансформации. 💪

🔥 20 Практични AWK Примера

📊 1. Преглед на CSV файл (първите 10 реда)

awk 'NR <= 10' data.csv

📌 NR е номерът на реда. Тук показваме само първите 10.


📊 2. Филтриране на редове по стойност (напр. колона 2 > 100)

awk -F',' '$2 > 100' data.csv

📌 -F',' задава разделител (запетая). $2 е втората колона.


📊 3. Извличане на конкретни колони (1-ва и 3-та)

awk -F',' '{print $1, $3}' data.csv

📌 Извежда само колони 1 и 3.


📊 4. Броене на редове във файл

awk 'END {print NR}' data.csv

📌 END се изпълнява след обработката. NR дава общия брой редове.


📊 5. Сумиране на числа в колона (напр. 3-та колона)

awk -F',' '{sum += $3} END {print sum}' data.csv

📌 Събира всички стойности в колона 3 и ги отпечатва накрая.


📊 6. Средна стойност на колона

awk -F',' '{sum += $2; count++} END {print sum/count}' data.csv

📌 Изчислява средно аритметично за колона 2.


📊 7. Намиране на максимална стойност в колона

awk -F',' 'NR==1 {max=$3} $3 > max {max=$3} END {print max}' data.csv

📌 Сравнява всяка стойност в колона 3 и намира най-голямата.


📊 8. Филтриране на уникални стойности в колона

awk -F',' '!seen[$1]++' data.csv

📌 Извежда само уникалните стойности в колона 1.


📊 9. Замяна на разделител (CSV → TSV)

awk -F',' '{print $1 "\t" $2 "\t" $3}' data.csv > data.tsv

📌 Конвертира запетайки в табове (\t).


📊 10. Добавяне на номера на редове

awk '{print NR, $0}' data.csv

📌 Вмъква номер на ред преди съдържанието.


📝 11. Търсене на грешки в логове (напр. "error")

awk '/error/ {print}' app.log

📌 Извежда всички редове, съдържащи "error".


📝 12. Броене на грешки в логове

awk '/error/ {count++} END {print count}' app.log

📌 Показва колко пъти се среща "error" във файла.


📝 13. Извличане на IP адреси от логове

awk '{print $1}' access.log | sort | uniq

📌 Взима първата колона (обикновено IP), сортира и филтрира уникални.


📝 14. Анализ на HTTP кодове (напр. 404, 500)

awk '{print $9}' access.log | sort | uniq -c | sort -nr

📌 Брои срещанията на HTTP статуси (404, 200 и др.).


📝 15. Топ 5 най-посещавани страници

awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -5

📌 Показва 5-те най-често срещани URL адреси.


✂ 16. Извличане на текст между маркери (напр. <title>…</title>)

awk -F'<title>|</title>' '{print $2}' webpage.html

📌 Взима текста между <title> и </title>.


✂ 17. Премахване на празни редове

awk 'NF > 0' file.txt

📌 NF е броят полета – тук се запазват само непразни редове.


✂ 18. Обръщане на реда на редовете във файл

awk '{lines[NR] = $0} END {for (i=NR; i>0; i--) print lines[i]}' file.txt

📌 Запазва редовете в масив и ги извежда в обратен ред.


✂ 19. Добавяне на текст в началото/края на всеки ред

awk '{print "START: " $0 " :END"}' file.txt

📌 Добавя "START: " и " :END" към всеки ред.


✂ 20. Разделяне на файл по критерий (напр. по колона)

awk -F',' '{print > $1 ".txt"}' data.csv

📌 Създава отделен файл за всяка уникална стойност в колона 1.


🎯 Заключение

С тези 20 AWK примера можете да:
✅ Анализирате CSV данни
✅ Обработвате логове
✅ Трансформирате текст

AWK е като "швейцарски нож" за текстова обработка – бърз, точен и универсален. 🛠️

💡 Съвет: Запазете тази статия и използвайте примерите като бърза справка!

🚀 Пробвайте ги сега и спестете часове ръчна работа!

Федя Серафиев

Федя Серафиев

Федя Серафиев e собственик на уебсайта urocibg.eu. Той намира удовлетворение в това да помага на хората да решават и най-сложните технически проблеми. Сегашната му цел е да пише лесни за следване статии, така че подобни проблеми изобщо да не възникват.

Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу: