A reguláris kifejezésekről az egrep-ben.

A Zeph Grunschlag

egrep a “Extended Global Regular Expressions Print” rövidítése. Ez egy olyan program, amely egy megadott fájlt sorról sorra átvizsgál, és visszaadja azokat a sorokat, amelyek egy adott reguláris kifejezésnek megfelelő mintát tartalmaznak.

A standard egrep parancs így néz ki:

egrep<flags> ‘<regularexpression>’ <filename>

Az általános flagek a következők: -c a sikeres találatok számolásához, és nem a tényleges találatok kinyomtatásához, -i a keresés case-függetlenné tételéhez, -n a sorszám kiírásához minden egyes találat kiírása előtt, -v a reguláris kifejezés komplementjének (azaz a nem megfelelő sorok visszaadásához), és -l a kifejezésnek megfelelő sorokat tartalmazó fájlok fájlneveinek kinyomtatásához.

A reguláris kifejezéseknek saját egrep változatuk van (ez nagyon hasonlít az emacsben, perlben stb. található reguláris kifejezésekhez.)

(A görög ε (epsilon) betű az üres karakterláncot jelöli)

Az egrep reguláris kifejezések és az elméleti reguláris kifejezések közötti egyik fő különbség az, hogy az egrep-ben a találatok a karakterlánc bármelyikében előfordulhatnak, míg az elméleti használatban a találatok mindig a karakterlánc első karakterétől indulnak és az utolsó karakterrel végződnek. Vegyük például a 000001000 karakterláncot.Az egrepben a 010 szabályos kifejezés megfelel; az elméleti 010 szabályos kifejezés viszont nem felel meg a 000001000-nek, mivel a 010 és a 000001000 nem egyenlő. Az egrep 010 elméleti megfelelője a (0+1)*010(0+1)*. Mi van akkor, ha valóban figyelembe akarjuk venni a karakterláncok elejét és végét? Az egre a kezdet megadásához a ^ pont szimbólumot, a véghez pedig a $ dollár szimbólumot adja meg. Tehát az elméleti 010 egrep megfelelője a ^010$ .

Egy másik hasznos egreps szimbólumpár a \< és \> szóhatárok, amelyek a szó elejét és végét jelölik.

Karakterek halmazának vagy tartományának megadásához használjuk a zárójeleket. A halmaz kijelöléséhez használjuk a ^ kalap szimbólumot az első karakterként. Például

  • a { a, 9, A, 0, 5 } halmaz.
  • a kiegészítő ASCII – { a, 9, A, 0, 5 } készlet. (minden, kivéve a, 9, A, 0 és 5).
  • az összes kisbetűs betű { a, b, c, d, …, z }
  • az összes ASCII betű halmaza, kivéve a kisbetűket, a 4 és 9 közötti számjegyeket, valamint a Q és R nagybetűket.

Néhány példa:

  • egrep ‘^(0|1)+ +$’ searchfile.txt

match minden olyan sor a searchfile.txt-ben, amely egy üres bitsorral kezdődik, amelyet egy szóköz követ, majd egy nem üres betűszó, amely a sort befejezi

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.