Linux-komennot ja komentotulkkitaidot
awk: kun sarakkeista tulee ohjelmia
awk on se mitä tavoitat, kun sarakkeista tulee työyksikkö: nginx-käyttölokit, /etc/passwd, df-tuloste, kaikki, mikä elää kentissä. Se on täydellinen kieli (muuttujat, taulukot, aritmetiikka, kuvio-toimintasäännöt) pukeutuu yksivuoriseen vaatteisiin, mikä on juuri oikea naamio hirsirikostutkimukselle. Rehellinen raja: kaikki, mitä awk tekee mukavasti, on yksilinjaista, ja kaikki, joka tarvitsee lohkosivun, on Python-skripti, joka ei ole vielä hyväksynyt itseään.
Keskeiset kohdat
- Kenttien jakaminen on ydintemppu: awk -F: '$3 >= 1000 {print $1}' /etc/passwd listaa todelliset käyttäjät ja -F'[,|]' käsittelee monimerkkiset erottimet, kun leikkaus on jo luovuttanut.
- Laske assosiatiivisilla taulukoilla: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure muuttaa minkä tahansa lokin taajuustaulukoksi yhdellä rivillä.
- NR ja NF vastaavat tiedoston kysymyksiin: 'NR==1' on otsikkorivi, '{print NF}' laskee sarakkeet riviä kohden, ja NR:n vertaaminen toisen tiedoston tallennettuihin arvoihin löytää kaksoiskappaleita ja aukkoja.
- Match plus -ote on päivittäinen leipä: awk '/ 500 / {print $7, $9}' access.log hakee virhesivut URL-osoitteineen, ja OFS:n avulla voit tulostaa $0 uudelleen yhden kentän muokkaamisen jälkeen kirjoittamatta riviä itse.
- BEGIN- ja END-lohkoissa aggregaattityö elää: BEGIN asettaa erottimet, keskisäännöt suoritetaan riviä kohden, END tulostaa summat; kolme lohkoa luetaan hyvin, viisi on naamioitunut käsikirjoitus.
- Lainaus on shell-yksirivisten todellinen vihollinen: lainaa ohjelmaa yhdellä lainauksella, sen sisällä kaksoislainauskirjaimia ja muista, että 7 dollaria kaksoislainausmerkkijonon sisällä ei koskaan saavuta awk-arvoa.
- Numeerinen työ saa LC_ALL=C: paikallinen pilkku numeroissa ja parittomat lajittelut kääntävät vertailut ja lajittelevat sivuttain, ja maa-asetuksen kiinnittäminen on yksi rivi, joka säästää iltapäivän.
- Tunne katto: lainausmerkit CSV:ssä, sisäkkäisissä JSON-muodoissa tai tilalliset moniriviset muodot menevät Pythoniin; awk on skalpelli ja pysyy sellaisena.
Kenttämuistiinpano
Awk yksilinjainen, joka summai dollarisarakkeet lokista kielipilkuilla, tuotti numeroita, joita kukaan ei kyseenalaistanut ennen kuin kirjanpito avasi raportin. LC_ALL=C muutti aliaskirjastoomme sillä viikolla ja jäi sinne.
Usein kysytyt kysymykset
awk tai leikkaus pylvästöihin?
leikkaus yhdelle kiinteälle erottimelle ja tavalliselle sarakeluettelolle; awk, kun ehdot, säännöllinen lauseke, aritmetiikka tai aggregaatit tulevat näkyviin, jolloin leikkaus on joka tapauksessa poissa syvyydestään.
Kuinka lasken sarakkeen summan tai keskiarvon?
Aggregate in END: awk '{s += $5} END {print s, s/NR}' lisää ja laskee keskiarvon kentän viisi rivien yli; poista tuhansien erottimet ensin, jos kieliasetus laittaa pilkkuja numeroihin.
Miksi awk one-linerini käyttäytyy eri tavalla macOS:ssä?
macOS toimittaa POSIX awk:n ilman GNU-laajennuksia, kuten -i inplace tai gensub; Linuxissa ajettavat skriptit voivat epäonnistua siellä hiljaa, joten pidä yksilinjaiset POSIX-muotoiset tai kanna gawk mukanasi.
Voiko awk jäsentää JSONia?
Ei mielekästä: JSONilla ei ole sarakerakennetta, jota awk ymmärtää ja regex-hakkerointi katkeaa sisäkkäisissä objekteissa. Käytä jq:ta, joka on awk:n muoto JSONille, tai Pythonin json-moduulia, kun työ kasvaa.
Näin Kinetikatech auttaa: linux-komennot ja komentotulkkitaidot
Rehellisesti sanottuna useimmat tiimit päätyvät meille yritettyään ensin itse: Komennot ja komentosarjatavat, jotka ratkaisevat, käyttääkö järjestelmänvalvoja palvelinta vai taisteleeko sitä vastaan: etsi, muunna, siirrä ja valvo tekstiä ja prosesseja työkaluilla, jotka ovat jokaisessa perusasennuksessa. Palvelumme Linux-palvelinten tietoturva ja Palvelinten ylläpito on olemassa, jotta sinun ei tarvitse tutustua linux-komennot ja komentotulkkitaidot:hen kantapään kautta; me hoidamme käyttöönoton, valvonnan ja kolmen aikaan yöllä tulevat yllätykset.