NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
BG

Linux команди и умения за командни обвивки

awk: Когато колоните станат програми

awk е това, към което посягате, когато колоните се превърнат в единица работа: регистрационни файлове за достъп на nginx, /etc/passwd, df изход, всичко, което живее в полета. Това е пълен език (променливи, масиви, аритметика, правила за действие на шаблони), облечен в дрехи на един ред, което е точното прикритие за криминалистиката на журналите. Честната граница: всичко, което awk прави удобно, е едноредово, а всичко, което се нуждае от страница с блокове, е скрипт на Python, който все още не е признал себе си.

Ключови точки

  • Разделянето на полето е основният трик: awk -F: '$3 >= 1000 {print $1}' /etc/passwd изброява реалните потребители, а -F'[,|]' обработва многосимволни разделители, когато cut вече се е отказал.
  • Преброяване с асоциативни масиви: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure превръща всеки журнал в честотна таблица в един ред.
  • NR и NF отговарят на въпроси във файла: 'NR==1' е заглавният ред, '{print NF}' брои колони на ред и сравняването на NR със запазените стойности на друг файл открива дубликати и пропуски.
  • Match plus екстрактът е ежедневният хляб: awk '/ 500 / {print $7, $9}' access.log изтегля страници с грешки с URL адреси, а OFS ви позволява да отпечатате отново $0 след редактиране на едно поле, без да пренаписвате сами реда.
  • Блоковете BEGIN и END са мястото, където живее обобщената работа: BEGIN задава разделители, средните правила се изпълняват на ред, END отпечатва суми; три блока се четат добре, пет е сценарий, носещ маскировка.
  • Цитирането е истинският враг на shell-liners: единични кавички на програмата, двойни кавички литерали вътре в нея и не забравяйте, че $7 вътре в двойни кавички shell низ никога не достига awk изобщо.
  • Числовата работа получава LC_ALL=C: локалните запетаи в числата и нечетните сортирания обръщат сравненията и сортирането настрани, а закрепването на локала е един ред, който спестява следобед.
  • Познайте тавана: цитираните запетаи в CSV, вложен JSON или многоредови формати със състояние отиват в Python; awk е скалпел и си остава такъв.

Бележка от терен

Един ред на awk, който сумира колони в долари от дневник със запетаи на локала, произвежда числа, които никой не поставя под съмнение, докато счетоводството не отвори отчета. LC_ALL=C се премести в нашата библиотека с псевдоними тази седмица и остана.

Често задавани въпроси

awk или cut за колонна работа?

изрязване за един фиксиран разделител и обикновен списък с колони; awk в момента, в който се появят условия, регулярен израз, аритметика или агрегати, в който момент изрязването така или иначе е извън своята дълбочина.

Как да сумирам или осредня колона?

Агрегиране в END: awk '{s += $5} END {print s, s/NR}' добавя и усреднява полето пет през редове; премахване на разделителите за хиляди първо, ако даден локал поставя запетаи в числата.

Защо моята awk едноредова версия се държи различно на macOS?

macOS доставя POSIX awk без GNU разширения като -i inplace или gensub; скриптове, които се изпълняват на Linux, могат тихо да се провалят там, така че дръжте едноредовия POSIX-образен или носете gawk със себе си.

Може ли awk да анализира JSON?

Няма смисъл: JSON няма структура на колони, която awk разбира и хаковете на регулярни изрази се разпадат на вложени обекти. Използвайте jq, което е формата на awk за JSON, или json модула на Python, когато работата се увеличи.

Как Kinetikatech помага с linux команди и умения за командни обвивки

Не е нужно да ставате експерт по linux команди и умения за командни обвивки: Командите и скриптовите навици, които решават дали администраторът управлява сървър или се бори с него: търсене, трансформиране, прехвърляне и надзор на текст и процеси с инструментите, които се намират във всяка основна инсталация. Точно затова съществува Сигурност на Linux сървъра и Сървърна администрация: въвеждане в експлоатация, укрепване, мониторинг и дежурен човек денонощно.

Говорете с инженер

Проблем със сървъра? Уебсайт хакнат? Бавно зареждане?

Критичните проблеми се разрешават за 30 минути — 24/7.

Поискайте спешна помощ support@kinetikatech.com