Ero sivun ”Säännöllinen lauseke” versioiden välillä

Siirry navigaatioon Siirry hakuun
223 merkkiä lisätty ,  18. helmikuuta 2010
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 pidä sekoittaa tiedostonimi-jokereihin ([[glob]]), joilla on samankaltainen toiminnallisuus (vrt. <tt>*</tt> ja <tt>.*</tt>).
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 kirjoittaa
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'''-send
  '''qmail'''s    3986    1  0 Jan21 ?        00:00:00 qmail-send
  '''qmail'''l    3990  3986  0 Jan21 ?        00:00:00 splogger '''qmail''' 2
  '''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'''-rspawn
  '''qmail'''r    3994  3986  0 Jan21 ?        00:00:00 qmail-rspawn
  '''qmail'''q    3995  3986  0 Jan21 ?        00:00:00 '''qmail'''-clean
  '''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 ===
150

muokkausta

Navigointivalikko