Awk

15 interesantas awk komandas

15 interesantas awk komandas
Šis raksts ļaus jums veikt dažas interesantas awk komandas un kad tās izmantot. Lasiet tālāk, lai uzzinātu!

Ievads awk

AWK ir populāra valoda UNIX un Linux. Savu vārdu tā ieguva no autoriem: Alfrēda Aho, Pētera Veinbergera un Braiena Kernigana. Komanda awk ļauj piekļūt AWK programmēšanas valodai, kas paredzēta datu apstrādei teksta straumēs.

Awk, ko populāri izmanto modeļu skenēšanai un sarežģītu darbību vienkāršošanai, palīdz jums rakstīt efektīvus paziņojumus, lai definētu faila teksta modeļus. Pēc tam komanda awk apstrādā šos apgalvojumus, lasot pa vienai rindai, un veic darbību, pamatojoties uz norādīto nosacījumu.

Vienkārši sakot, awk atrod un aizstāj tekstu, kā arī palīdz kārtot, apstiprināt vai indeksēt dotos datus.

AWK iezīmes

AWK nāk ar daudz unikālu iespēju:

  1. Awk kompilācija nav nepieciešama
  2. Bieži izmanto datu iegūšanai
  3. Parasti tiek izmantots teksta manipulāciju veikšanai
  4. Vajadzības gadījumā palīdz ģenerēt rezultātus.

Tagad izpētīsim awk komandu spēku.

15 interesantas awk komandas

Šeit ir apkopots saraksts ar dažām interesantām awk komandām:

  1. Gadījuma skaitļu drukāšana komplektā - Pieņemsim, ka vēlaties izdrukāt dažus nejaušus skaitļus no izvēlētā kopas. Jūs varat norādīt nejaušo skaitļu daudzumu no šī kopas un lūgt awk to izdrukāt. Lūk, piemērs: izdrukāsim 10 ciparus no 0 līdz 1000. Tātad awk komanda tam būs šāda: awk 'BEGIN for (i = 1; i <= 10; i++)
    drukāt int (1001 * rand ()) '
  1. Meklē foo vai bāru - Ko darīt, ja vēlaties uzrakstīt rindu, kurā vēlaties veikt vienkāršu foo vai joslas meklēšanu? Lūk, komanda, kas ļaus jums to izdarīt: if (/ foo / || / bar /)
    drukāt "Atrasts!"
  1. Lauka pārkārtošana - Ja vēlaties izdrukāt noteiktu lauku noteiktā secībā, awk to var izdarīt jūsu vietā. Pieņemsim, ka vēlaties izdrukāt konkrētas kopas pirmos 5 laukus vienā laukā katrā rindā, varat izmantot šādu komandu: awk 'i = 1
    kamēr es <= 3)
    drukāt $ i
    i++

    'ievades fails
  1. Līnijas sadalīšana - Jebkurā konkrētā failu komplektā awk var palīdzēt sadalīt līniju laukos, kur x ir lauka nosaukums: $ awk 'print $ x, $ x' xyz.txt
  1. Vairāku komandu izpilde vienlaikus - Lai palaistu vairākas komandas vienlaikus, varat izmantot semikolu, lai norādītu abas komandas: $ echo "Labrīt! Džeks "| awk '$ 2 =" Džils "; drukāt $ 0'
  1. Izpilda awk skriptu - Ja vēlaties izpildīt awk skriptu no konkrēta faila, varat izveidot failu sum_column un ielīmēt zemāk esošo skriptu šajā failā: #!/ usr / bin / awk -f
    SĀKT summa = 0
    summa = summa + $ x
    END drukas summa

    Iepriekš minētajā skriptā x ir vienāds ar kolonnu, kas jāievada failā. Veiksmīgi izpildot šo uzdevumu, varat izmantot šo komandu, lai ievades failā parādītu kolonnas x summu:

    awk -f sum_column input_file.
  1. Izmantojot -f - Kodējot, bieži vien var šķist nepraktiski atsaukties uz termināli. awk izmanto -f, lai veiktu meklēšanu no faila: awk -f skripts.awk ievades fails
  1. Matemātikas funkciju veikšana - Varat arī izmantot awk vienkāršām matemātikas funkcijām: awk 'summa = $ 2 + $ 3 + $ 4; vid. = summa / 3
    > drukāt $ 1, vid. atzīmes
  1. Sveika pasaule awk - Vienkāršu Hello World varat izdrukāt awk, izmantojot šādu komandu: awk "BEGIN print" Hello World!!""

    Varat arī izveidot programmu Hello World. Šis kods ne tikai izdrukās visuresošo sveiciena ziņojumu, bet arī ģenerēs informāciju par galveni:

    $ awk 'BEGIN print "Sveika pasaule!""
  1. Kopējā baitu skaita izdrukāšana - Izmantojot šādu komandu, varat uzzināt failu izmantoto baitu kopskaitu: ls -l . | awk 'x + = $ 5; END \
    print "kopējais baitu skaits:" x '
    kopējie baiti: 7449362
  1. Anonimizējot Apache žurnālu - Apache žurnāla anonimizēšanai varat izmantot šādu kodu: cat apache-anon-noadmin.žurnāls | \
    awk 'funkcija ri (n) \
    Atgriešanās int (n * rand ()); \
    SĀKT srand (); Ja (! \
    (5 ASV dolāri džekā)) \
    domkrats [$ 5] = sprintf ("% d.% d.% d.% d ", \
    ri (255), ri (255) \
    , ri (255), ri (255)); \
    $ 5 = domkrats [$ 5]; print __g5_token5b610ba53dbe4 '
  1. Darbojas rindās - Ja jums ir adrese, kuru vēlaties kārtot rindās, to varat izdarīt, izmantojot šādu komandu: BEGIN RS = ""; FS = "\ n"

    drukāt "Nosaukums ir:", 1 ASV dolārs
    drukāt "Adrese ir:", 2 ASV dolāri
    drukāt "Pilsēta un štats ir:", 3 ASV dolāri
    izdrukāt ""
  1. Izmantojot cilpu while - Kamēr cilpa turpina izpildīt darbību, kas tai dota atkārtotā procesā, līdz nosacījums ir patiess. Piemēram, lai drukātu numurus no 1 līdz 100, varat izmantot šādu kodu: awk 'BEGIN i = 1; kamēr es < 100) print i; ++i '
  1. Izmantojot ciklu do-while - Šajā ciklā nosacījums tiek izpildīts cikla beigās, pat ja apgalvojums ir nepatiess. Piemēram, lai izdrukātu numurus no 1 līdz 100, izmantojot cilni “do-while”, varat izmantot šādu kodu: awk 'BEGIN i = 1; do izdrukāt i; ++ i kamēr (i < 100) '
  1. Izmantojot BEGIN un END - Atslēgvārds BEGIN tiek izmantots, lai izveidotu galveni ieraksta apstrādei: $ awk 'BEGIN print "XXX"

    Tādā pašā veidā pēc datu apstrādes tiek izmantots atslēgvārds END:

    END print "faila kājene" '

Tādējādi tiek pabeigts 15 interesanto awk komandu saraksts. Jūs varat tos izmēģināt un redzēt rezultātus. Ceru, ka jums tas noderēs. Ja jums šis raksts šķita interesants, varat izpētīt Linux Shell Scripting - otrā izdevuma apgūšanu. Šajā grāmatā jūs atradīsit visu, kas jums jāzina, lai apgūtu čaulas skriptu un izdarītu apzinātu izvēli par jūsu izmantotajiem elementiem.

Noderīgi rīki Linux spēlētājiem
Ja jums patīk spēlēt spēles Linux, iespējams, ka spēļu pieredzes uzlabošanai, iespējams, esat izmantojis tādas lietotnes un utilītprogrammas kā Wine, ...
HD Remastered spēles operētājsistēmai Linux, kurām nekad agrāk nebija Linux laidiena
Daudzi spēļu izstrādātāji un izdevēji nāk klajā ar veco spēļu HD remaster, lai pagarinātu franšīzes darbības laiku. Lūdzu, faniem, kas pieprasa saderī...
Kā izmantot AutoKey, lai automatizētu Linux spēles
AutoKey ir darbvirsmas automatizācijas lietderība operētājsistēmām Linux un X11, kas ieprogrammēta Python 3, GTK un Qt. Izmantojot skriptu un MACRO fu...