Ero sivun ”Säännöllinen lauseke” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
fix++
p (→Teoriaa: typo) |
p (fix++) |
||
Rivi 5: | Rivi 5: | ||
Säännöllisistä lausekkeista on yleisesti käytössä kolme tyyppiä: ''tavallinen'' (engl. basic), ''laajennettu ''(engl. extended) ja ''[[Perl]]-tyyppinen''. Varsinkin useassa järjestelmässä käytettäviä [[skripti|skriptejä]] kirjoitettaessa täytyy olla huolellinen, mikäli käyttää tavallisesta poikkeavia ilmaisuja. Tässä ohjeessa esitetty syntaksi on yhteensopiva Linuxin [[GNU]]-grepin laajennetun syntaksin kanssa jollei toisin mainita. | Säännöllisistä lausekkeista on yleisesti käytössä kolme tyyppiä: ''tavallinen'' (engl. basic), ''laajennettu ''(engl. extended) ja ''[[Perl]]-tyyppinen''. Varsinkin useassa järjestelmässä käytettäviä [[skripti|skriptejä]] kirjoitettaessa täytyy olla huolellinen, mikäli käyttää tavallisesta poikkeavia ilmaisuja. Tässä ohjeessa esitetty syntaksi on yhteensopiva Linuxin [[GNU]]-grepin laajennetun syntaksin kanssa jollei toisin mainita. | ||
Säännöllisiä lausekkeita ei | Säännöllisiä lausekkeita ei tule sekoittaa tiedostonimi-jokereihin (glob), joilla on samantapainen toiminnallisuus (vrt. <tt>*</tt> ja <tt>.*</tt>). Tiedostonimijokereita ja säännöllisiä lausekkeita voi hydöyntää usein samoissa yhteyksissä, mutta säännölliset lausekkeet ovat tiedostonimijokereita ilmaisuvoimaisempia. | ||
== Teoriaa == | == Teoriaa == | ||
Rivi 27: | Rivi 27: | ||
bono | bono | ||
Yleensä (mm. grep ja awk) katsotaan, että kohteen alussa ja lopussa voi olla mielivaltainen määrä ei-vastaavia merkkejä. Tällöin kohde (s.o. näiden komentojen tapauksessa ''rivi'') vastaa lauseketta, jos edes jokin sen ''osa'' vastaa lauseketta. Siis grep ja awk -yhteydessä lauseke | Yleensä (mm. grep ja awk) katsotaan, että kohteen alussa ja lopussa voi olla mielivaltainen määrä ei-vastaavia merkkejä. Tällöin kohde (s.o. näiden komentojen tapauksessa jokin ''rivi'' jossain tiedostossa) vastaa lauseketta, jos edes jokin sen ''osa'' vastaa lauseketta. Siis grep ja awk -yhteydessä lauseke | ||
abba | abba | ||
vastaa kohdetta | vastaa kohdetta | ||
Rivi 388: | Rivi 388: | ||
(... jne ...) | (... jne ...) | ||
Jos haluamme ylläolevasta listasta vain "qmail" -alkuisten [[käyttäjä|käyttäjien]] prosessit, voisimme | Jos haluamme ylläolevasta listasta vain "qmail" -alkuisten [[käyttäjä|käyttäjien]] prosessit, voisimme [[putki]]ttaa syötteen grepille kirjoittamalla | ||
ps -ef | grep qmail | ps -ef | grep qmail | ||
Tämä kuitenkin tulostaa myös kaikki sellaiset prosessit, joiden nimikentässä esiintyy "qmail" – joukossa myös käyttäjän [[root]] prosesseja vastoin alkuperäistä tarkoitusta: | Tämä kuitenkin tulostaa myös kaikki sellaiset prosessit, joiden nimikentässä esiintyy "qmail" – joukossa myös käyttäjän [[root]] prosesseja vastoin alkuperäistä tarkoitusta: | ||
$ ps -ef | grep qmail | $ ps -ef | grep qmail | ||
'''qmail'''s 3986 1 0 Jan21 ? 00:00:00 | '''qmail'''s 3986 1 0 Jan21 ? 00:00:00 qmail-send | ||
'''qmail'''l 3990 3986 0 Jan21 ? 00:00:00 splogger | '''qmail'''l 3990 3986 0 Jan21 ? 00:00:00 splogger qmail 2 | ||
root 3993 3986 0 Jan21 ? 00:00:00 '''qmail'''-lspawn | /usr/bin/deliverquota ./Maildir | root 3993 3986 0 Jan21 ? 00:00:00 '''qmail'''-lspawn | /usr/bin/deliverquota ./Maildir | ||
'''qmail'''r 3994 3986 0 Jan21 ? 00:00:00 | '''qmail'''r 3994 3986 0 Jan21 ? 00:00:00 qmail-rspawn | ||
'''qmail'''q 3995 3986 0 Jan21 ? 00:00:00 | '''qmail'''q 3995 3986 0 Jan21 ? 00:00:00 qmail-clean | ||
Ratkaisu qmail -alkuisten käyttäjien prosessien listaamiseen on: | Ratkaisu qmail -alkuisten käyttäjien prosessien listaamiseen on: | ||
Rivi 437: | Rivi 437: | ||
== Laajennukset == | == Laajennukset == | ||
Lukuunottamatta operaattoria <tt>{n,m}</tt> ja POSIX-luokkia (<tt>[[:luokka:]]</tt> jne.) yllä esitetty on pitkälti universaalisti tuettua säännöllisten lausekkeiden eri toteutuksissa. Monissa toteutuksissa on kuitenkin tehty laajennuksia tähän, mutta esim. [[grep]] ei tue seuraavia. | Lukuunottamatta operaattoria <tt>{n,m}</tt> ja POSIX-luokkia (<tt>[[:luokka:]]</tt> jne.) yllä esitetty on pitkälti universaalisti tuettua säännöllisten lausekkeiden eri toteutuksissa. Monissa toteutuksissa on kuitenkin tehty laajennuksia tähän, mutta esim. <tt>[[grep]]</tt> ei tue seuraavia. | ||
=== Pakoluokat === | === Pakoluokat === |