A csillag sokak számára ismerősnek tűnhetik – és jó esély van arra is, hogy valaki itt veszítse el a fonalat… A csillag ismerős lehet a dos/windows-vonalról éppen úgy, mint a linux parancssorából – és miközben felfedezhető távoli és homályos rokonság, a reguláris kifejezésekben a csillag másképp működik.
A csillag jelentése a következő: az előző karakterből nulla vagy több. Más szavakkal: az előző karakterből valamennyi, esetleg semennyi. Első látásra ennek nem sok értelme van; ha őszinték vagyunk, másodikra sem:
tux@madas:~/public_html/txt/mp$ grep q* ksh_hnk_1913.txt | wc 12538 12548 137383 tux@madas:~/public_html/txt/mp$
A fentiek szerint tehát 12538 olyan település van, melynek nevében van néhány q, megengedve azt az esetet is, hogy sehány sincs: erre –a várakozásoknak megfelelően– az összes település nevét megkapjuk.
A .* jelentése: bármiből bármennyi (esetleg semennyi) – ez még az előzőnél is haszontalanabbnak tűnik. Megfelelő helyzetben azonban megmutatkozik az ereje:
tux@madas:~/public_html/txt/mp$ grep j.*j ksh_hnk_1913.txt jászóváralja jászóújfalu rafajnaújfalu zsilyvajdejvulkán vajdej vajdej pojeniczavojni bojtorjános héjjasfalva jánosújfalu jászkarajenő újhelyjóka lajtaújfalu dabjonújfalu újjózseffalva jobbágyújfalu újbajna sátoraljaújhely tux@madas:~/public_html/txt/mp$ grep ly.*ly ksh_hnk_1913.txt szentmihálykörtvélyes székelyuraly mélykastély székelydálya székelyszentmihály székelyszentkirály székelyudvarhely zólyommihályi tux@madas:~/public_html/txt/mp$
Mi magyarázza az alábbiakat?
tux@madas:~/public_html/txt/mp$ grep j.*ly ksh_hnk_1913.txt | wc 18 18 258 tux@madas:~/public_html/txt/mp$ grep ly.*j ksh_hnk_1913.txt | wc 12 12 179 tux@madas:~/public_html/txt/mp$
És ha a fenti kérdésre megvan a válasz, mi a magyarázat a következőre?
tux@madas:~/public_html/txt/mp$ grep j ksh_hnk_1913.txt | grep ly | wc 29 29 424 tux@madas:~/public_html/txt/mp$
Ha szerencsések vagyunk elsőre, rosszabb esetben másodikra megtaláljuk az eltérés okát:
tux@madas:~/public_html/txt/mp$ grep j.*ly.*j ksh_hnk_1913.txt újhelyjóka tux@madas:~/public_html/txt/mp$
Egy korábbi lecke alapján megkereshettük a legtöbb karakterből álló településnevet. Ha a hosszúságot most a szótagok számával mérjük, akkor a következő eredményt kapjuk:
tux@madas:~/public_html/txt/mp$ grep [aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű] ksh_hnk_1913 keletifelsőszombatfalva nyugotifelsőszombatfalva alsórásztok és felsőrásztok tux@madas:~/public_html/txt/mp$ grep [aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű].*[aáeéiíoóöőuúüű] ksh_hnk_1913 tux@madas:~/public_html/txt/mp$
A csillag azonban nem csak a pont után lehet hasznos. Az alábbi paranccsal kiírathatjuk például azoknak a településeknek a nevét, amelykben a betűk abc-rend szerint növekednek (a kettős mássalhangzóktól most eltekintünk):
tux@madas:~/public_html/txt/mp$ grep ^a*á*b*c*d*e*é*f*g*h*i*í*j*k*l*m*n*o*ó*ö*ő*p*q*r*s*t*u*ú*ü*ű*v*w*x*y*z*$ ksh_hnk_1913.txt | wc 40 40 200 tux@madas:~/public_html/txt/mp$ grep ^a*á*b*c*d*e*é*f*g*h*i*í*j*k*l*m*n*o*ó*ö*ő*p*q*r*s*t*u*ú*ü*ű*v*w*x*y*z*$ ksh_hnk_1913.txt | grep .... aklos borz bors bény hort diós csúz abos ákos alőr bély tux@madas:~/public_html/txt/mp$
Az előző pédában a kalapnak és a dollárnak fontos szerepe volt:
tux@madas:~/public_html/txt/mp$ grep a*á*b*c*d*e*é*f*g*h*i*í*j*k*l*m*n*o*ó*ö*ő*p*q*r*s*t*u*ú*ü*ű*v*w*x*y*z* ksh_hnk_1913.txt | wc 12538 12548 137383 tux@madas:~/public_html/txt/mp$