4.előadás
Szűrők, Mintaillesztés, Regex
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
- u.a.
- intervallum:
Segíthet: Regex101 (personal recommendation), RegExr
Példák
cat fájl | grep "^$"- üres sor kiválasztásacat 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 -Efgrep- 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
BREa 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 azsbufferbe- ??????
- pl. cut:
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örnyezetbenPATH: keresési út, itt próbálja a rendszer megkeresni a futtatható programokat, szkritpetek- elválasztó karakter:
:
- elválasztó karakter:
Változók
- Változó definiálása:
=jel - Pl.:
csapat=Fradi- Szóközt nem lehet használni! (
csapat = fradinem érvényes)
- Szóközt nem lehet használni! (
szam=5echo $szam- Kiírásecho ${csapat}x=${csapat-Újpest}- ha nincscsapat,xaz "Újpest" leszx=${csapat=Újpest}- u.a., decsapatis változikx=${csapat+Újpest}- ha VANcsapat,xaz "Újpest" leszy=${csapat?Szia}- ha nincscsapat, "Szia" kiírásra kerül, és kilép a program.ynem 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ásaunset: változó törlésesh: 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
- pl:
- Összeadás, szorzás, etc:
exprparancsexpr 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
aba b c
- 3 paraméter
- 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 $?)
- megkapni:
Logikai kifejezések
testparancstrue- igaz, eredmény: 0false- hamis, eredmény: 1- miért van fordítva? mert ez Hibakód