Oper ci s rendszerek gyakorlat
Download
1 / 29

Operációs rendszerek gyakorlat - PowerPoint PPT Presentation


  • 49 Views
  • Uploaded on

Operációs rendszerek gyakorlat. sed parancsok. Sed parancs. Stream editor – folyamban lévő szöveg szerkesztése Pl.: szöveg lecserélésére Működése: Keres (a reguláris kifejezés alapján) Lecserél (az illesztett mintát a helyettesítő szövegre) Kiír (képernyőre, fájlba) Pl.:

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Operációs rendszerek gyakorlat' - zola


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Oper ci s rendszerek gyakorlat

Operációs rendszerekgyakorlat

sed parancsok


Sed parancs
Sed parancs

Stream editor – folyamban lévő szöveg szerkesztése

Pl.: szöveg lecserélésére

Működése:

  • Keres (a reguláris kifejezés alapján)

  • Lecserél (az illesztett mintát a helyettesítő szövegre)

  • Kiír (képernyőre, fájlba)

    Pl.:

    sed ‘s/nappal/este’ file_in file_out

    sed ‘s/nappal/este’ file_in


P lda
Példa

sed ‘s/nappal/este/’ file_in file_out

s search parancsot jelezi

/../../ a per jel az elválasztó jel (más is lehet, #)

nappal egy reguláris kifejezés

este a helyettesítendő szöveg

sed ‘s#nappal#este#’ file_in file_out


& jel

Ha a reguláris kifejezésre illesztett szöveget is fel szeretnénk használni a helyettesítő szövegben - & jellel megtehető.

Pl.:ki akarjuk egészíteni a szöveget, stb.

pl. ha zárójelbe akarjuk tenni:

sed ‘s/[0-9]/(&)/’ file_in file_out

sed ‘s/[0-9]/(&)/’ file_in


Glob lis csere
Globális csere

  • Alapesetben csak az első illeszkedést cseréli

  • Ez kiterjeszthető a teljes (globális) szövegre:

    sed ‘s/[0-9]/(&)/g’ file_in


Illeszked kifejez s egy r sze
Illeszkedő kifejezés egy része

Ha az illeszkedő reguláris kifejezés egy részét kívánjuk csak felhasználni:

  • Ekkor a tárolni kívánt részt tegyük zárójelbe () a reguláris kifejezésben

    Megjegyzés: a zárójel speciális karakter, így védeni kell a speciális jelentéstől backspashekkel: \( \)

  • A helyettesítő részben pedig használjuk a \1 karaktersort

    sed ‘s/\([0-9]*\)/(\1)/g’ file_in

  • Több ilyen rész is kijelölhető, mindegyikre a számával hivatkozhatunk: \1 , \2, \3, …, \9

    ez hasznos lehet pl. felcserélésnél

    sed ‘s/\([0-9]*\)\([a-z]* \)/\2\1/g’ file_in


String t rl se
String törlése

\l karakter segítségével

sed ‘s/\([0-9]* \)/\l/g’ file_in

Más megoldás?


P lda1
Példa

  • Cseréljük fel a stringben a betűket és számokat.

    sed ‘s/\([a-z]*\) \([0-9]* \)/\2\1/g’ file_in

abc123

123abc


Feladat
Feladat

Tegyük zárójelbe a számokat, de ne egyesével,

hanem csoportosan:

sed ‘s/\([0-9]\)/(&)/g’ file_in

sed ‘s/\([0-9]*\)/(&)/g’ file_in

sed ‘s/\([0-9]+\)/(&)/g’ file_in

sed ‘s/\([0-9]+\)/(&)/g’ file_in

sed ‘s/\([0-9]\+\)/(&)/g’ file_in

sed ‘s/\([0-9][0-9]*\)/(&)/g’ file_in

abc123  abc(1)(2)(3)

abc123  abc(123)


Feladatok
Feladatok

  • Egy ’honap.txt’ nevű fájlban hogyan cserélné le a january hónap nevét 01. számra,mely után zárójelben szerepeljen az eredeti név is: january  01. (january)

  • Egy szövegben titkosítani ‘kellene’ a neveket. Hogyan cserélné le a nagybetűvel kezdődő, utána csak kisbetűket tartalmazó neveket ‘xxx’ karaktersorra: Barbara  xxx

  • Elírás történt egy fájlban. Hogyan cserélné le a 19-cel kezdődő évszámokat 20-val kezdődőre. (évszám 4 karakter!): 1908  2008

  • Töröljön ki egy konyv.txt nevű állományban minden a betűt!

  • Hogyan cserélne le egy állományban kis vagy nagy A-val kezdődő, számot nem tartalmazó, kis vagy nagy Z-re végződő szavakat 3 darab nagy A-ra?


Oper ci s rendszerek gyakorlat1

Operációs rendszerekgyakorlat

awk parancsok


Awk parancs
Awk parancs

A.V. Aho

P.J. Weinberger

B.W. Kernighan

1977. AT&T Bell Lab

Újabb verziói:

  • gawk

  • mawk

    Felhasználása:

  • programozási nyelv implemetálására

  • assembler


awk

  • Adatvezérelt programozási nyelv

    Adat + mit kell vele csinálni

  • Szintaxisa

    awk ‘/minta/{parancs}’ file

    Minta, ami illeszkedik egy szövegdarabra, és a művelet.

    Minta: per jelek közé, reguláris kifejezés.

    Illeszkedés esetén futtatja a parancsrészt.

    Egyéb esetben nem történik semmi.

    Több mint és parancs is megadható.


Legegyszer bb eset
Legegyszerűbb eset

  • Ha nem adunk meg mintát

  • Ekkor a fájl minden sorát fel akarjuk dolgozni

    Pl.: kinyomtatni

    awk ‘{print}’ file


Feladat1
Feladat

Hozzunk létre egy foo_test nevű fájlt a következő tartalommal:

awk ‘{print}’ foo_test

awk ‘/foo/ {print}’ foo_test

foo 12 4

bar 21 6

alma 3 7

foot 4 8

mofoo 5 9

korte 6 5

7 foo 1


K t szab ly megad sa
Két szabály megadása

Több sorban egy aposztófon belül megadható több szabály is:

awk ‘/12/ {print „Bingo”}

/21/ {print „Bongo”}’ foo_test


Elv laszt jelek
Elválasztó jelek

  • Rekordok

    • A program a bemeneti fájlt rekordokban olvassa be, és dolgozza fel.

    • Alapesetben a rekordelválasztó jel a \n sortörés – azaz soronként történik a feldolgozás.

    • Ez a jel az RS (record separator) változóban van eltárolva.

  • Mezők

    • A rekordok mezőkre vannak osztva. Alapesetben a mezőelválasztó a TAB, SPACE vagy újsor.

    • Egy mezőre a $ jellel hivatkozhatunk: első mező a $1, második a $2, stb.

    • Az awk tudja, hogy az aktuális rekordban hány mező van – amit az NF (number of field) változóban tárol

    • Ezek a változók felhasználhatók az awk-ban.


  • P lda2
    Példa

    echo ‘Ez egy hosszú sor’ | awk ‘{print $4 $3 $2 $1}’

    echo ‘Ez egy hosszú sor’ | awk ‘{print $4, $3, $2, $1}’

    echo ‘Ez egy hosszú sor’ | awk ‘{print $4 ” ” $3 ” ” $2 ” ” $1}’

    echo ‘Ez egy hosszú sor’ | awk ‘{print NF}’

    Feladat: Nyomtassuk ki a sor utolsó mezőjét, ha nem tudjuk pontosan hány mezőből áll a sor!


    Mi az 0
    Mi az $0?

    $0 – jelentése a teljes rekord

    Pl.: egy teljes fájl kinyomtatása:

    awk ‘{print $0}’ file


    T bb parancs kiad sa
    Több parancs kiadása

    • Lehetséges, egymással ;-vel elválasztva, mint a C-ben

      awk ‘{print $0; print $0}’ file


    M veletek mez rt kekkel
    Műveletek mezőértékekkel

    • Az awk képes egy adott szöveget szövegként és számként is kezelni.

      awk ‘{print $1”:” $2+$3}’ file

      Megjegyzés: nincs hiba, ha szöveget kell kezelni, ekkor a számérték 0.


    Begin end mint k
    Begin –End minták

    Begin minta – a bemeneti fájlok feldolgozása előtt illeszkedik és fut le

    End minta – fájlok feldolgozása után használható

    Pl.:

    awk ‘BEGIN {sum = 0}

    {sum = sum + $3}

    END {print „Az összeg: ” sum}’ test


    Matematikai m veletek awk ban
    Matematikai műveletek awk-ban

    változó = érték értékadás

    - x negálás

    x + y összeadás

    x - y kivonás

    x * y szorzás

    x / y osztás

    x ^ y hatványozás

    x % y modulo osztás

    x++ növelés

    ++x növelés

    x-- csökkentés

    --x csökkentés


    Igaz hamis logikai
    Igaz, hamis, logikai

    x < y

    x <= y

    x > y

    x >= y

    x == y

    x != y

    x && y x ÉS y

    x || y x VAGY y

    !x NEM x


    Vez rl s tad kifejez sek
    Vezérlés átadó kifejezések

    while ( feltétel )

    {

    műveletek

    }

    for (inicializalas ; feltétel ; növelés )

    {

    műveletek

    }

    if feltétel

    {

    művelet

    }

    if feltétel

    {

    művelet

    }

    else

    {

    művelet

    }


    Egyszer bb feladatok
    Egyszerűbb feladatok

    • Mit csinál és mi a különbség az awk parancsban megadott /foo/{print}{print} és a /foo/{print; print} között

    • Hogyan számolná meg awk parancs segítségével, hogy a Tuskevar nevű fájlban hány embert hívnak Tutajosnak? (Egy sorban többször is szerepelhet a szó!)

    • Nyomtassa ki a képernyőre az /etc/passwd fájlban lévő felhasználó azonosítókat!


    Feladatok1
    Feladatok

    • Nyomtassunk ki egy file-ból minden második mezőt

    • Nyomtassuk ki a számokat 1-tol 10-ig

    • Nyomtassuk ki a sorok számat egy file-ban, mint a wc parancs.

    • Hogyan lehetne minden második sort kinyomtatni:

    • Írjuk ki azokat a felhasználókat, akik le vannak tiltva. A letiltás

      azt jelenti hogy egy * jel van a jelszó helyén:

    • Nagyon sok függvényt ismer az AWK, pl a length a szöveg hosszát adja meg. Így hogyan lehetne a leghosszabb sor méretét kinyomtatni?

    • Írjunk programot, mely ugyanúgy működik, mint a wc program, vagyis kiírja a sorok, szavak és karakterek számat:


    Megold sok
    Megoldások

    1. awk '{ for(i=1; i<=NF; i+=2)

    print $i

    }' test

    2. awk 'BEGIN { for(i=1; i<=10; i++) print i}‘

    3. awk 'END { print NR }' test

    vagy

    awk 'BEGIN { s=0;}

    {s = s + 1}

    END { print s}' test


    Megold sok1
    Megoldások

    4. awk '{ if ( NR % 2 == 0 ) print $0}' test

    5. awk 'BEGIN { FS=":" }

    {if ($2 == "*") print $1 " letiltva"}' /etc/passwd

    6. awk '{ if (length($0) > max ) max = length($0) }

    END { print max }' test

    7. awk '{szo = szo + NF; kar = kar + length($0)}

    END{ print NR,szo,kar}


    ad