Kihagyás

4.előadás

Szűrők, Mintaillesztés, Regex

Lásd előző jegyzet

A \ idézőjelnek számít

Reguláris kifejezések (ReGex)

  • Karakterhalmaz: [FTC] - vagy F vagy T vagy C
    • intervallum: [a-z] - a-tól z-ig minden
    • [^a-^c] - nem a, b vagy c betűk
    • [A-Za-z0-9] alfanumerikus karakterek
      • u.a. \w
      • nem alfanumerikus \W

Segíthet: Regex101 (personal recommendation), RegExr

Példák

  • cat fájl | grep "^$" - üres sor kiválasztása
  • cat fájl | grep
  • stb.

További grep parancsok

grep is used for simple patterns and basic regular expressions (BREs); egrep can handle extended regular expressions (EREs). fgrep is quicker than both grep and egrep, but can only handle fixed patterns. ~ man grep

  • egrep - bővített grep, grep -E
  • fgrep - fixed grep, grep -F
    • minták sorokban taláhatók
  • ls | egrep "par|pelda"
  • ^[+-]?\d+([,.]\d+)? - előjeles tizedes szám

Mintaillesztési operátorok

Operátor Funkció
[x-y] x és y közötti karakterek valamelyike
[xzy] Az x,y, z karakterek valamelyike (tetszőleges karakter, kivéve a -, azt escape-elni kell)
\ Standard escape, (Lefoglalt karakterek értelmezése)
. Tetszőleges karakter
* Az előző minta 0 és végtelen közötti előfordulással Mohó mintaillesztés (greedy)
+ Az előző minta 1 és végtelen közötti előfordulással (tehát 1 minimum legyen). Szintén mohó
? Az előző minta 0 és 1 közötti előfordulással (vagy van 1, vagy nincs). Lusta mintaillesztés (lazy)
{x} Az előző minta pontosan x alkalommal
{x,y} Az előző minta legalább x-szer, de maximum y-szor (az y opcionális, ha nincs, akkor végtelen)
() Csoport definiálása (csoportos ismétlődés egyszerűsítésére)

Lusta mintaillesztés: A legkevesebb elégséges találatot adja vissza

Mohó mintaillesztés: Az összes lehetséges találatot visszaadjahh


Reguláris kifejezési formák (regex flavours)

  • Basic Regular Expression
    • BRE
  • Extended Regular Expression
    • ERE
  • Pearl Compatible Regular Expression
    • PCRE

BRE a grep alapértelmezett természetes kifejezési formája

``

Szövegszerkesztők

Vim

  • Cut, Copy, Paste (névtelen buffer)
    • Cut: dd
    • Copy: yy
    • Paste: p
    • több sor esetén pl: 5dd
  • Neves buffer
    • pl. cut: "s5dd - 5 sor vágása az s bufferbe
      • ??????

UNIX shell változók

Szöveges változók

Neve betűvel kezdődik, utána szám és aláhúzás

Két típus:

  • Környezeti változók
    • a környezetben és az abból indított parancsokban is láthatók (semi globális)
    • env - program futtatása a definiált környezetben
    • PATH: keresési út, itt próbálja a rendszer megkeresni a futtatható programokat, szkritpetek
      • elválasztó karakter: :

Változók

  • Változó definiálása: = jel
  • Pl.:
    • csapat=Fradi
      • Szóközt nem lehet használni! (csapat = fradi nem érvényes)
    • szam=5
    • echo $szam - Kiírás
    • echo ${csapat}
    • x=${csapat-Újpest} - ha nincs csapat, x az "Újpest" lesz
    • x=${csapat=Újpest} - u.a., de csapat is változik
    • x=${csapat+Újpest} - ha VAN csapat, x az "Újpest" lesz
    • y=${csapat?Szia} - ha nincs csapat, "Szia" kiírásra kerül, és kilép a program. y nem kap értéket
  • A változó tartalma mindig karakter
  • Parancsok:
    • export: környezeti változóvá tesz egy változót (meghívott programok is látják)
    • set: összes változó kiírása
    • unset: változó törlése
    • sh: szkriptek futtatása - itt csak a környezeti (export-olt) változók látszódnak

Parancsbehelyettesítés

  • ${parancs}
    • pl: echo ${date} - Mon Oct 3 11:37:42 CEST 2022
  • Összeadás, szorzás, etc: expr parancs
    • expr 3 + 2 -> 5
    • parancsbehelyettesítéssel lehet tárolni pl. változóban

Parancsok meghívása

  • param a b "a b c"
    • 3 paraméter
      • a
      • b
      • a b c
  • Szkriptből paraméterek lekérdezése:
    • $0 - parancs neve
    • $1...$9 - paraméterek
    • ${10}... - további paraméterek
  • Minden parancs eredményt ad vissza
    • megkapni: ? változóból (pl: echo $?)

Logikai kifejezések

  • test parancs
  • true - igaz, eredmény: 0
  • false - hamis, eredmény: 1
    • miért van fordítva? mert ez Hibakód