78 {79Β int flags = REG_NOSUB; /* ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ */80Β int ret;81 #define MSGBUFSIZE 512 /* ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ */82Β char error[MSGBUFSIZE];8384Β if (ignore_case)85Β Β flags |= REG_ICASE;86Β if (extended)87Β Β flags |= REG_EXTENDED;8889Β ret = regcomp(&pattern, pat, flags);90Β if (ret != 0) {91Β Β (void)regerror(ret, &pattern, error, sizeof error);92Β Β fprintf(stderr, "%s: pattern '%s': %s\n", myname, pat, error);93Β Β errors++;94Β }95 }Π‘ΡΡΠΎΠΊΠΈ 75β95 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ
compile_pattern()REG_NOSUBflagsΠ‘ΡΡΠΎΠΊΠΈ 84-85 Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»Π°Π³ΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΠΏΡΠΈΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π‘ΡΡΠΎΠΊΠ° 89 ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½, Π° ΡΡΡΠΎΠΊΠΈ 90β94 ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ
97Β /* process --- ΡΠΈΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ
Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ */9899 Β void process(const char *name, FILE *fp)100 {101Β char *buf = NULL;102Β size_t size = 0;103Β char error[MSGBUFSIZE];104Β int ret;105106Β while (getline(&buf, &size, fp) != -1) {107Β Β ret = regexec(&pattern, buf, 0, NULL, 0);108Β Β if (ret != 0) {109Β Β Β if (ret != REG_NOMATCH) {110Β Β Β Β (void)regerror(ret, &pattern, error, sizeof error);111Β Β Β Β fprintf(stderr, "%s: file %s: %s\n", myname, name, error);112Β Β Β Β free(buf);113Β Β Β Β errors++;114Β Β Β Β return;115 Β Β }116Β Β } else117Β Β printf("%s: %s", name, buf); /* Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ */118 Β }119Β free(buf);120 }Π‘ΡΡΠΎΠΊΠΈ 97β120 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ
process()getline()getline()getdelim()regexec()REG_NOMATCΠΠΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 0, ΡΡΡΠΎΠΊΠ° ΡΠΎΠ²ΠΏΠ°Π»Π° Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΡΠΎΠΊΠ° 117 Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΡΡΡΠΎΠΊΡ.
122 /* usage --- Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π²ΡΡ
ΠΎΠ΄ */123124 void usage(void)125 {126 Β fprintf(stderr, "usage: %s [-i] [-E] pattern [ files ... ]\n", myname);127Β exit(1);128 }Π€ΡΠ½ΠΊΡΠΈΡ
usage()ΠΠΎΡ ΠΈ Π²ΡΠ΅! Π‘ΠΊΡΠΎΠΌΠ½Π°Ρ, Π½ΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π²Π΅ΡΡΠΈΡ
grep12.9. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠ°Ρ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
1.Β Programming Pearls, 2nd edition, by Jon Louis Bentley Addison-Wesley, Reading, Massachusetts, USA, 2000. ISBN- 0-201-65788-0. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. [131]
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΡΠ΅ΠΌ Π² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅.
2.Β Building Secure Software How to Avoid Security Problems the Right Way, by John Viega and Gary McGraw Addison-Wesley, Reading, Massachusetts, USA, 2001. ISBN: 0-201-72152-X.
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π³ΠΎΠ½ΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠΈΡΠ»Π°. ΠΠ°Π½Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π½Π°ΡΡΠ΄Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±Π΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΡ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΠΎ Π½Π΅ΠΉ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π³Π»Π°Π²Π΅.)
3.Β The Art of Computer Programming. Volume 2. Seminumerical Algorithms, 3rd edition, by Donald E. Knuth Addison-Wesley, Reading, Massachusetts, USA, 1998. ISBN- 0-201-89684-2. [132] Π‘ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. [133]
ΠΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π».
4.Β Random Number Generation and Monte Carlo Methods, 2nd edition, by James E. Gentle Springer-Verlag, Berlin, Germany. 2003. ISBN: 0-387-00178-6.
ΠΠ°Π½Π½Π°Ρ ΠΊΠ½ΠΈΠ³Π° ΡΠΈΡΠΎΠΊΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π». Π₯ΠΎΡΡ Π΄Π»Ρ Π½Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°, ΡΡΠΎΠ²Π΅Π½Ρ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ Π²ΡΡΠΎΠΊΠΈΠΉ, ΠΊΠ°ΠΊ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΠ½ΡΡΠ°. (ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Nelson H.F. Beebe Π·Π° ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ.)
5.Β sed & awk, 2nd edition, by Dale Dougherty and Arnold Robbins. O'Reilly and Associates, Sebastopol, California, USA, 1997. ISBN: 1-56592-225-5.
ΠΡΠ° ΠΊΠ½ΠΈΠ³Π° ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ Π² ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΠΊΡΡΠ°, Π½Π°ΡΠΈΠ½Π°Ρ Ρ
grepsedawk6.Β Mastering Regular Expressions, 2nd edition, by Jeffrey E.F. Friedl. O'Reilly and Associates, Sebastopol, California, USA, 2002. [134] ISBN: 0-59600-289-0.