Linux komandos ir apvalkalo įgūdžiai
awk: Tai kai stulpeliai tampa programomis
awk yra tai, ko pasiekiate, kai stulpeliai tampa darbo vienetu: nginx prieigos žurnalai, /etc/passwd, df išvestis, viskas, kas gyvena laukuose. Tai išbaigta kalba (kintamieji, masyvai, aritmetika, rašto-veiksmo taisyklės), dėvint vieno pamušalo drabužius, o tai yra būtent tinkama rąstų kriminalistikos maskuotė. Sąžininga riba: viskas, ką awk daro patogiai, yra viena eilutė, o viskas, kam reikia blokų puslapio, yra Python scenarijus, kuris dar nepripažino savęs.
Pagrindiniai punktai
- Laukų padalijimas yra pagrindinė gudrybė: awk -F: '$3 >= 1000 {print $1}' /etc/passwd išvardija tikruosius vartotojus, o -F'[,|]' tvarko kelių simbolių skyriklius, kai iškirpimas jau pasidavė.
- Skaičiavimas su asociatyviniais masyvais: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure paverčia bet kurį žurnalą dažnių lentele vienoje eilutėje.
- NR ir NF atsako į failo klausimus: „NR==1“ yra antraštės eilutė, „{print NF}“ skaičiuoja stulpelius eilutėje, o lyginant NR su kito failo išsaugotomis reikšmėmis aptinkama dublikatų ir spragų.
- Match plus ekstraktas yra kasdienė duona: awk '/ 500 / {print $7, $9}' access.log ištraukia klaidų puslapius su URL, o OFS leidžia pakartotinai atspausdinti $0, redagavus vieną lauką, pačiam neperrašant eilutės.
- BEGIN ir END blokai yra vieta, kur gyvuoja bendras darbas: BEGIN nustato skyriklius, vidurinės taisyklės vykdomos vienoje eilutėje, END spausdina sumas; trys blokai gerai perskaityti, penki yra scenarijus, dėvintis maskavimą.
- Citavimas yra tikrasis apvalkalo vienos eilutės priešas: vieną kabutę parašykite programoje, joje – dvigubas kabutes ir atminkite, kad 7 USD dvigubos apvalkalo eilutės viduje niekada nepasiekia awk.
- Skaitmeninis darbas gauna LC_ALL=C: lokalės kableliai skaičiuose ir nelyginiai palyginimai paverčia palyginimus ir rūšiuoja į šoną, o lokalės prisegimas yra viena eilutė, kuri sutaupo popietę.
- Žinokite ribas: kabutėmis CSV viduje, įdėtajame JSON arba būseną nurodantys kelių eilučių formatai pereina į Python; awk yra skalpelis ir lieka juo.
Pastaba iš praktikos
Netinkamas vieno eilutės stulpelis, sumuojantis dolerio stulpelius iš žurnalo su lokalės kableliais, davė skaičius, kurių niekas neabejojo, kol apskaita neatidarė ataskaitos. LC_ALL=C tą savaitę persikėlė į mūsų slapyvardžių biblioteką ir liko.
Dažniausiai užduodami klausimai
awk ar supjaustyti stulpelių darbui?
iškirpti vienam fiksuotam separatoriui ir paprastam stulpelių sąrašui; awk akimirksniu, kai pasirodo sąlygos, reguliarioji išraiška, aritmetika ar suvestiniai rodikliai, o tuo metu pjūvis vis tiek nepasiekia gylio.
Kaip sumuoti arba suvesti stulpelio vidurkį?
Agregate in END: awk '{s += $5} END {print s, s/NR}' prideda ir apskaičiuoja penkis laukus per eilutes; Pirmiausia pašalinkite tūkstančių skyriklius, jei lokalė į skaičius deda kablelius.
Kodėl „MacOS“ mano „awk“ vieno įdėklas veikia kitaip?
macOS pristato POSIX awk be GNU plėtinių, tokių kaip -i inplace arba gensub; „Linux“ veikiantys scenarijai ten gali tyliai sugesti, todėl laikykite POSIX formos vienetus arba nešiokitės su savimi.
Ar awk gali išanalizuoti JSON?
Nereikšminga: JSON neturi stulpelių struktūros, kurią awk supranta, o įdėtųjų objektų reguliarieji įsilaužimai nutrūksta. Naudokite jq, kuris yra awk formos JSON, arba Python json modulį, kai darbas auga.
Kaip Kinetikatech padeda su linux komandos ir apvalkalo įgūdžiai
Štai ką darome šiandien: Komandos ir scenarijų rašymo įpročiai, kurie nusprendžia, ar administratorius valdo serverį, ar su juo kovoja: ieškokite, transformuokite, perkelkite ir prižiūrėkite tekstą bei procesus naudodami įrankius, esančius kiekviename baziniame diegime. Mūsų paslauga Linux serverių sauga ir Serverių administravimas apima viską — nuo vertinimo iki įgyvendinimo, stebėjimo 24/7 ir skubaus reagavimo per 30 minučių.