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.

AWK filravimas praktika pavyzdžiai
Išmokite naudotis AWK

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

Add a Comment

Your email address will not be published. Required fields are marked *