AWK pavyzdžiai numeris #2
|Iš teorijos į praktiką su AWK ir shellu susipažinti geriausiai padeda praktiniai uždaviniai. Turėdamas laisvą minutę nusprendžiau atsirinkti savo Youtube kanalo, populiariausių video pavadinimus ir susidėti juos į sąrašą. Šis straipsniukas tuo prasidės, o ateityje tikiuosi ir pratęsti su dar daugiau pavyzdžių, nes AWK tikrai naudingas įrankis informacijai atfiltruoti.
Youtube pavadinimų filtravimas
Grubiai ir paprastai buvo nukopijuotas visas puslapio tekstas su visais pavadinimais. Ir gavome tokį failą, kuris ir buvo List.txt
paprastumui. Pati pirma mano idėja buvo išvalyti tarpus tarp eilučių, kadangi jos tikrai sugadins galimybę gauti rezultatus, pratęsimas žemiau failo.
Failas List.txt:
1:00 TF2 - How to get and use the Backpack Expander HD Mar 27, 2011 7:14 PM Edit 252 256 83 103,278 views 0:47 Gas Fill Fail - How NOT to Fill Up a Gas Tank HD Nov 1, 2014 6:30 PM Edit 28 104 35 101,355 views 1:27 Prototype - First Helicopter mission - Tutorial Fail HD Jun 15, 2009 12:46 PM Edit 147 59 50 86,524 views
Tam panaudojau šią komandą.
$ awk 'NF' List.txt > List2.txt
‘NF’ – komanda NF yra number of fields iš esmės parodo tas eilutes, kuriose yra turinys (tekstas ar simboliai). Pašalinus eilutes gavome didelį failą su daug eilučių arba laukų. Visi bandymai išgauti kažkokį rezultatą nedavė naudos, kol nesuvokiau, kad man teliko iš ties tik eilutės. Kartais tiesiog reikia atsitraukti šiek tiek tolėliau, kad suprastum paprastus dalykus. Tęsiam žemiau…
Gavome tokį rezultatą:
Failas List2.txt: 1:00 TF2 - How to get and use the Backpack Expander HD Mar 27, 2011 7:14 PM Edit 252 256 83 103,278 views 0:47 Gas Fill Fail - How NOT to Fill Up a Gas Tank HD Nov 1, 2014 6:30 PM Edit
Užduotis buvo išfiltruoti tik pavadinimo eilutes iš mūsų turimo failo. Taigi tam reikia skripto, kuris rodytų būtent kas n-eilutę. Po neilgų ir keletos bandymų pavyko surasti tinkamą kodą:
$ awk 'NR%8==2' List2.txt
Sprendimas yra labai paprastas. NR – rodo išgauna eilučių skaičių % – atvaizduoja eilučių skaičių ir spausdina kas 8 eilutę, pradedant nuo 2 eilutės. Ir galutinis rezultatas yra toks:
TF2 - How to get and use the Backpack Expander HD Gas Fill Fail - How NOT to Fill Up a Gas Tank HD Prototype - First Helicopter mission - Tutorial Fail HD