CurrentUser rašė: > Čia ir yra tokių kaip aš bėda. kaip sakydavo senelis "devyni amatai - > dešimtas badas". Aš savo gyvenime tiek dalykų esu kandęs, kad pačiam > būtų sunku patikėti. Visko vis tiek neapžiosi. Aišku, tai ką tikiesi Būtų gerai, jei vienas iš tų devynių amatų būtų gebėjimas mokytis; tada bado tikrai nebūtų... :-) O ši patarlė jau kiek praranda aktualumą. Nes nūdieną, įvairiausių technologijų sūkuryje, reikia ne apžioti, o efektyviai pritaikyti ir pasinaudoti. Taip, daugelyje dalykų tenka slysti paviršiumi, išmanyti labai paviršutiniškai, tačiau pramokęs/suvokęs/atsiminęs principus, gebėsi ir pritaikyti (kaip ir pasigilinti, kai prireiks). Aš awk irgi gerai nemoku. Atsimenu, kaip jis veikia: skaito nuosekliai po eilutę (records), skaidydamas tekstą į laukus (fields). Kas skiria laukus ir eilutes galima nustatyti ir keisti. Taip pat sulyg kiekviena eilute tikrinamos sąlygos ir jei jos patenkinamos — vykdomas sąlygų kodas. Turi aibę matematinių ir tekstinių funkcijų, regexp. Viskas: daugmaž tiek žinių man pakanka išspręsti tavo uždavinį pakankamai greitai. > finale tikslas būtų toks kaip attchm. Bet ten dar yra daugiau teksto, > kuris neatrodo vien stulpeliuose, todėl ir maniau, kad vienas nekintamas Tai gana paprasta (su komentarais): BEGIN { # Šis BEGIN blokas vykdomas prieš skaitant failą. # Kol kas nustatome, kad po kiekvieno print nedėliotų newline # ORS — output record separator ORS = "" } ## Sąlygų blokai ## # Regular expression sąlyga, nors galima parašyti ir taip: # ($1 == "Date:" || $1 = "Time:") { ... } $1 ~ /Date:|Time:/ { # išvedame datą arba laiką su kabliataškiu print $2 ";" } # Penki stulpeliai eilutėje (tik eilutės su temperatūra) ir žyma # (pirmas stulpelis) prasideda raide E, o po to seka skaičius. # Suprantama, čia gali tekti koreguoti, taikyti kompleksiškesnes # sąlygas, jei failo formatas keičiasi, gali būti įvairesnis NF >= 5 && $1 ~ /E[0-9]+/ { # išvedame trečią ir ketvirtą stulpelius print $3 ";" $4 ";" } # blokas be sąlygos (vykdomas kiekvienai perskaitytai eilutei) { # jis tuščias } END { # šis END blokas vykdomas perskaičius failą } Vualia: > cat report.txt | iconv -f utf-16 -t utf-8 | gawk -f parse.awk 11/19/13;06:24;195.0;195.0;185.0;185.3;175.0;175.2;165.0;164.9; Tai — praktiškai pilnavertis CSV, kurį gali importuoti (galima ir stulpelius: Data, Laikas, E1 ... pradžioje pridėti) į excel'į (Data -> Import External Data). Arba jau tikrai turėtum susigaudyti, kaip tokį failą VBA išnarstyti ir į celes surašyti: arr = Split(line, ";") <...>