Awk

Kaip padalinti stygų failą su Awk

Kaip padalinti stygų failą su Awk
„Linux awk“ komanda (sutrumpinta iš kūrėjų vardų; Aho, Weinberger ir Kernighan) yra puikus būdas apdoroti ir analizuoti eilučių failą. Kad failai būtų informatyvesni, juos reikia sutvarkyti eilių ir stulpelių pavidalu. Tada galite naudoti awk šiuose failuose:

Šiame straipsnyje paaiškinsime pagrindinį komandos „awk“ naudojimą ir tai, kaip ją galima naudoti norint padalyti eilučių failą. Šio straipsnio pavyzdžius mes atlikome „Debian 10 Buster“ sistemoje, tačiau juos galima lengvai pakartoti daugumoje „Linux“ distributorių.

Failo pavyzdys, kurį naudosime

Eilučių failas, kurį naudosime norėdami parodyti komandos awk naudojimą, yra toks:

Tai rodo kiekvienas failo pavyzdžio stulpelis:

1 pavyzdys: naudokite „Awk“, kad išspausdintumėte visas failo eilutes

Kiekvienos nurodytos bylos eilutės spausdinimas yra numatytasis komandos awk elgesys. Šioje komandos awk sintaksėje nenurodome jokio modelio, kurį turėtų spausdinti awk, todėl komanda turėtų taikyti „spausdinimo“ veiksmą visoms failo eilutėms.

Sintaksė:

$ awk 'print' failo pavadinimas.txt

Pavyzdys:

Šiame pavyzdyje liepiu komandai awk atspausdinti failo pavyzdžio turinį, eilutę po eilutės.

$ awk 'print' sample_file.txt

2 pavyzdys: naudokite „awk“, kad atspausdintumėte tik tas linijas, kurios atitinka nurodytą modelį

Su awk galite nurodyti modelį ir komanda atspausdins tik tas eilutes atitinkančias eilutes.

Sintaksė:

$ awk '/ pattern_to_be_matched / print' failo vardas.txt

Pavyzdys:

Iš failo pavyzdžio, jei noriu atspausdinti tik eilutę (-es), kurioje yra kintamasis „B“, galiu naudoti šią komandą:

$ awk '/ B / print' sample_file.txt

Kad pavyzdys būtų prasmingesnis, leiskite man atspausdinti tik informaciją apie profesoriaus darbuotojus.

$ awk '/ professor / print' sample_file.txt

Komanda išspausdina tik eilutes / įrašus, kuriuose yra eilutė „profesorius“, taigi turime daugiau vertingos informacijos, gautos iš duomenų.

3 pavyzdys. Norėdami padalyti failą taip, kad būtų spausdinami tik konkretūs laukai / stulpeliai, naudokite awk

Užuot atspausdinę visą failą, galite padaryti awk spausdinti tik tam tikrus failo stulpelius. Pagal numatytuosius nustatymus Awk visus eilutėje žodžius, atskirtus tarpais, laiko stulpelių įrašais. Jis saugo įrašą kintamajame $ N. Kur 1 USD reiškia pirmąjį žodį, 2 USD saugo antrąjį žodį, 3 - ketvirtąjį ir t. T. 0 USD saugo visą eilutę, taigi eilutė spausdinama, kaip paaiškinta 1 pavyzdyje.

Sintaksė:

$ awk 'print $ N,… .' failo pavadinimas.txt

Pavyzdys:

Ši komanda atspausdins tik pirmąjį mano pavyzdžio failo stulpelį (pavadinimą) ir antrąjį stulpelį (temą):

$ awk 'print $ 1, $ 2' sample_file.txt

4 pavyzdys: naudokite „Awk“, kad suskaičiuotumėte ir atspausdintumėte eilučių, kuriose derinamas raštas, skaičių

Galite nurodyti awk suskaičiuoti eilučių, kuriose atitinka nurodytą modelį, skaičių ir tada išleisti tą „skaičių“.

Sintaksė:

$ awk '/ pattern_to_be_matched / ++ cnt END spausdinti "Count =", cnt'
failo pavadinimas.txt

Pavyzdys:

Šiame pavyzdyje noriu suskaičiuoti asmenų, dėstančių dalyką „anglų kalba“, skaičių. Todėl pasakysiu komandai awk, kad ji atitiktų modelį „anglų kalba“, ir išspausdysiu eilučių, kuriose šis modelis sutampa, skaičių.

$ awk '/ english / ++ cnt END spausdinti "Count =", cnt' sample_file.txt

Čia pateiktas skaičius rodo, kad 2 žmonės moko anglų kalbos iš pavyzdinių bylos įrašų.

5 pavyzdys: naudokite „awk“, jei norite spausdinti tik eilutes, turinčias daugiau nei konkretų simbolių skaičių

Šiai užduočiai atlikti naudosime įmontuotą awk funkciją, vadinamą „ilgis“. Ši funkcija grąžina įvesties eilutės ilgį. Taigi, jei norime, kad „awk“ spausdintų tik eilutes, kurių simbolių skaičius yra didesnis arba net mažesnis, ilgio funkciją galime naudoti taip:

Jei norite spausdinti linijas, kurių simboliai yra didesni nei skaičius:

$ awk 'length ($ 0)> n' failo vardas.txt

Jei norite spausdinti linijas, kurių simboliai yra mažesni nei skaičius:

$ awk 'ilgis ($ 0) < n' filename.txt

Kur n yra simbolių, kuriuos norite nurodyti eilutei, skaičius.

Pavyzdys:

Ši komanda atspausdins tik tas eilutes iš mano pavyzdinio failo, kurių simboliai yra didesni nei 30:

$ awk 'ilgis ($ 0)> 30' pavyzdinis_failas.txt

6 pavyzdys: naudokite awk, kad išsaugotumėte komandos išvestį į kitą failą

Naudodami peradresavimo operatorių '>', galite naudoti komandą awk, kad išspausdintumėte jos išvestį į kitą failą. Tai galite naudoti taip:

$ awk 'kriterijai_į_print "failo vardas.txt> outputfile.txt

Pavyzdys:

Šiame pavyzdyje naudosiu peradresavimo operatorių su savo awk komanda norėdamas atspausdinti tik darbuotojų vardus (1 stulpelis) į naują failą:

$ awk 'print $ 1' pavyzdinis failas.txt> darbuotojo vardai.txt

Per „cat“ komandas patikrinau, ar naujame faile yra tik darbuotojų vardai.

7 pavyzdys: naudokite awk, kad iš failo atspausdintumėte tik ne tuščias eilutes

„Awk“ turi keletą įmontuotų komandų, kuriomis galite filtruoti išvestį. Pavyzdžiui, NF komanda naudojama norint išsaugoti laukų skaičių dabartiniame įvesties įraše. Čia naudosime komandą NF, kad atspausdintume tik tuščias failo eilutes:

$ awk 'NF> 0' pavyzdinis_failas.txt

Akivaizdu, kad tuščioms eilutėms atsispausdinti galite naudoti šią komandą:

$ awk 'NF < 0' sample_file.txt

8 pavyzdys: naudokite awk, kad suskaičiuotumėte visas failo eilutes

Kita įmontuota funkcija, vadinama NR, skaičiuoja nurodyto failo įvesties įrašų (paprastai eilučių) skaičių. Galite naudoti šią funkciją awk taip, kad suskaičiuotumėte failo eilučių skaičių:

$ awk 'END print NR' pavyzdinis failas.txt

Tai buvo pagrindinė informacija, kurią turite pradėti skirstydami failus naudodami komandą awk. Galite naudoti šių pavyzdžių derinį, kad gautumėte prasmingesnę informaciją iš eilučių failo per awk.

Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...