length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki.

Hasonló dokumentumok
BASH SCRIPT SHELL JEGYZETEK

AWK programozás, minták, vezérlési szerkezetek

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

AWK programozás, minták, vezérlési szerkezetek

AWK programozás Bevezetés

Operációs rendszerek gyak.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

Szkriptnyelvek. 1. UNIX shell

Szűrők Reguláris kifejezések, AWK

Operációs rendszerek 1.

BEKÉRT ADAT KÉPERNYŐRE ÍRÁSA KÖRNYEZETI VÁLTOZÓK FÁJL REDEZETT KIÍRÁSA KÖNYVTÁRBAN BEJEGYZÉSEK SZÁMA FÁJLBAN SZÁM NÖVELÉSE. #!

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

C# gyorstalpaló. Készítette: Major Péter

S z á m í t ó g é p e s a l a p i s m e r e t e k

Rendszerprogramozás Linux környezetben

Szűrők, reguláris kifejezések AWK programozás: minták, vezérlési szerkezetek, tömbök, beépített függvények, reguláris kifejezések

BASH script programozás II. Vezérlési szerkezetek

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Operációs rendszerek I. - UNIX felhasználói ismeretek és héjprogramozás. Az awk

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.


7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

2018, Funkcionális programozás

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

INFORMATIKA javítókulcs 2016

1. Jelölje meg az összes igaz állítást a következők közül!

UNIX/héjprogramozás - awk. Az awk

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Példa: Aktuális könyvtár tartalmának fájlba mentése, melynek neve az aktuális dátum és idő: ls l > `date+%f_%h-%m`.txt

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Operációs Rendszerek II. labor. 2. alkalom

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

1. Alapok. #!/bin/bash

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Operációs Rendszerek Gyakorlat

2018, Funkcionális programozás

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Flex tutorial. Dévai Gergely

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

10. gyakorlat Struktúrák, uniók, típusdefiníciók

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Programozás alapjai. 5. előadás

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

2018, Funkcionális programozás

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

7. fejezet: Mutatók és tömbök

Maximum kiválasztás tömbben

Bevezetés a programozásba I.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

chmod umask chown, chgrp

Adatbáziskezelés. SQL parancsok. Függvények

Algoritmizálás és adatmodellezés tanítása 1. előadás

Karakter- és sztringkezelő függvények, matematikai függvények

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Bevezetés a programozásba I.

Objektumorientált Programozás IV.

8. Mohó algoritmusok Egy esemény-kiválasztási probléma. Az esemény-kiválasztási probléma optimális részproblémák szerkezete

Java II. I A Java programozási nyelv alapelemei

Operációs rendszerek gyakorlat

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Szabadkai Műszaki Szakfőiskola. Web programozás. dr Zlatko Čović

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Gyakorló feladatok Gyakorló feladatok

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Smalltalk 2. Készítette: Szabó Éva

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

10. gyakorlat Tömb, mint függvény argumentum

Objektum Orientált Programozás IV.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

Java gyakorlat feladatai e s megolda sai ( )

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Programozás alapjai óra. Morvai Flórián, 2010 Dr. Dévényi Károly előadásvázlata alapján

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár október 4.

2018, Funkcionális programozás

Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

Operációs rendszerek. A mai program. Jó dolog a test parancs! Segédprogramok, szűrők

5. Gyakorlat. struct diak {

A sed folyamszerkesztő

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

3. Osztályok II. Programozás II

Java II. I A Java programozási nyelv alapelemei

Elemi függvények. Matematika 1. előadás. ELTE TTK Földtudomány BSc, Környezettan BSc, Környezettan tanár 3. előadás. Csomós Petra

Egyszerű példaprogramok gyakorláshoz

Átírás:

9. Gyakorlat AWK 2

length (s): Az s karaklerlánc hossza, substr(s,m,n): Az s mezőben levő karakterláncnak az m-edik karakterétől kezdődő, n darab karaktert vágja ki. Ha az n-et elhagyjuk, akkor az m-ediktől az utolsóig írja ki a karakterláncot. (nem módosítja az eredetit) split (s, a, c): Az S-t c karakter szerint a[l]... a[n] mezőkre bontja, visszaadja n-et. Ha nem adunk meg c-t, akkor az FS értékét használja. index (s1, s2): Az s2 helyzete az s1 karakterláncban. 0-t ad vissza, ha nincs benne. sprintf (fmt,... ):...-ot az fmt szerint formázza sin (kif): A kif szinusza. (radiánban) cos (kif ): A kif koszinusza. (radiánban) exp (kif ): A kif exponenciális függvénye. (e kif ) log (kif): A kif természetes logaritmusa. int (kif): A kif egészrésze. getline ( ): A következő bemenő sort olvassa, 0-t ad vissza, ha fájl vége, 1-et, ha nem. tolower(): kisbetűssé alakítva adja vissza a stringet (nem módosítja az eredetit) toupper(): nagybetűssé alakítva adja vissza a stringet (nem módosítja az eredetit) sub(regexp,replstring,mystring): karaktersorozatot cserél mystringben gsub(regexp,replstring,mystring): karaktersorozatokat cserél mystringben

#! /bin/awk BEGIN { mystring="how are you doing today?" honapok="jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec" { END {

Az s karaklerlánc hossza. Ha elmarad a kif, akkor a teljes sor hosszát adja vissza. END { print length(mystring) $ cat valami_bemenet awk -f awk_prg > 24

Az s2 helyzete az s1 karakterláncban. 0-t ad vissza, ha nincs benne. END { print index(mystring, you ) > 9

Nagy illetve kisbetűssé alakítva adja vissza az s1 karakterláncot. Az eredetit nem módosítja! END { print tolower(mystring) print toupper(mystring) > how are you doing today? > HOW ARE YOU DOING TODAY?

mystring: vagy string tartalom, vagy string vált. startpos: kezdő karakter pozíciója maxlen: kivágni kívánt szöveg hossza Ha (startpos + maxlen) > length(mystring) akkor az eredményt csonkolva kapjuk. END { print substr(mystring,9,3) > you

Trigonometrikus függvények. A kif függvényértékét adják vissza radiánban. END { print sin(180) print (length(mystring)) > -0.801153 > -0.905578

A kif exponenciális függvénye. (e kif ) END { print exp(0) print exp(1) > 1 > 2.71828

A kif természetes alapú logaritmusát adja vissza. END { print exp(0) print exp(1) > 0.999999 > 1

A kif egész részét adja vissza. END { print int(3.1415) > 3

mystring: ebben a karaktersorozatban keres regexp: raguláris kifejezésnek megfelelő mintát replstring: erre cseréli sub( ): CSAK az első egyezőt gsub( ) Az összeset. MÓDOSÍTJA mystring eredeti tartalmát!!!

END { sub(/o/, "O", mystring) print mystring mystring="how are you doing today?" gsub(/o/, "O", mystring) > HOw are you doing today? > HOw are you doing today?

if for if (feltetel) utasitas1 else utasitas2 for (kif1;feltetel;kif2) utasitas for(i = 1; i<=nf; i++) //a ciklus végigfut az 1, 2,... értékeken a mezők számáig.

while kif1 while (feltetel) { utasitas kif2

ugyanúgy, mint a változókat nem kell előre deklarálni; egy tömb méretét csak a gépben elérhető tárterület korlátozza. awk { sor[nr] = $0 END { for(i=nr; i>0; i--) print sor[i] lista Az alábbi program a lista állomány minden sorát indexelve külön tömbelembe gyűjti, majd fordított sorrendben kiírja.

Egy tömb indexe rendszerint csak egész szám lehet, az awk-ban azonban bármilyen értéket használhatunk tömbindexként. for (valt in tomb) utasitas A valt értékét minden indexre beállítja, így szervezi ciklusba a tömb indexeit (nem az elemeit!!!).

s: stringet c: mezőelválasztó szerint a: tömbbe teszi mymonths: létrehozza a tömböt END { numelements=split(honapok,mymonths,",") print mymonths[1],mymonths[numelements] > Jan Dec

Van egy állományunk (lista.txt), mely tartalmazza, hogy ki mennyi kockacukrot evett meg egy-egy alkalommal. Számoljuk ki, hogy összesen, ki mennyi kockacukrot evett meg!

#!/bin/awk { sum[$1]+=$2 END { for (name in sum) print name, sum[name] lista.txt fájl tartalma ---------------------------- -------- Tamás 200 Jóska 123 Tibor 365 Zsuzsa 564 Edit 214 Tibor 112 Elemér 423 Jóska 433 Tibor 452 Tamás 423 ---------------------------- --------- cat lista.txt awk f program1

Egy tömbelemnek van értéke és indexe A nevekre $1-el hivatkozunk, a nevek lesznek a tömb indexei Az index alapján adunk a tömbelemnek értéket Ha a név megegyezik egy korábbi névvel, vagyis az index azonos, akkor hozzáadja (+=) a meglévő értékhez Ha a += helyett csak = lenne, akkor azt tudnánk meg, hogy ki mennyi kockacukrot evett meg a legutóbbi alkalommal.

A következő program megszámolja, hogy a lista állományban melyik szóból mennyi található. #!/bin/awk { for (i=1; i<= NF; i++) num[$i]++ END {for (word in num) print word, num[word] awk f program2 lista.txt ls awk f program2

A bemenet sorait számolja meg. Az input az ls parancs eredménye #!/bin/awk { s+=1 END { print összeg:,s $ ls awk f program3 lista

A program kiírja az inputként megadott leghosszabb sort. #!/bin/awk BEGIN { max=0; sor= { if (length($0)>max){ max=length($0); sor=$0 END {print sor

A program kiírja a számokat 1-től 10-ig. #!/bin/awk BEGIN { i=0 while (i<10) { print i i++

Írj awk programot, mely megszámolja az inputban megadott karakterek, szavak és sorok számát. #!bin/awk { kar+=length($0) szo+=nf END{ print "A karakterek száma: "kar; print "A szavak száma: "szo print "A sorok száma: "NR $ ls awk f pelda6 $ cat lista.txt awk f pelda6

Add meg azt a parancsot mellyel módosítod a who parancs eredményét úgy, hogy a mezőelválasztó karakter @ a rekordelválasztó pedig $ legyen. who awk 'BEGIN{OFS="@";ORS= $ {print $1,$2,$3,$4,$5,$6'

Írasd azon felhasználók nevét, akik 14:35- kor léptek be! rwho awk '{if ($5=="14:35"){print $1'

Írasd ki azon felhasználók nevét akik 10 perce nem csináltak semmit! $ rwho awk '{if ($6==":11"){print $1

Írasd ki azon felhasználók számát akik több mint tíz perce nem csináltak semmit. $ rwho awk '{print $6' awk 'BEGIN{FS=":"{print $2' grep -v "^$" awk '{if ($1>10)print $1' wc -l