Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 23

Автор НСйл ΠœΡΡ‚ΡŒΡŽ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, рассмотрим дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΉΠ΄Π΅Π½ Ρ„Π°ΠΉΠ», ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ вашСй спСцификации. И снова Π² Ρ‚Π°Π±Π». 2.13 пСрСчислСны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС популярныС дСйствия; ΠΏΠΎΠ»Π½Ρ‹ΠΉ список ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° страницах ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ справочного руководства.


Π’Π°Π±Π»ΠΈΡ†Π° 2.13

ДСйствиС ОписаниС -exec ΠΊΠΎΠΌΠ°Π½Π΄Π° ВыполняСткоманду. НаиболСС ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ дСйствиС. ПослС Ρ‚Π°Π±Π». 2.13 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ объяснСниС способа ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π­Ρ‚ΠΎ дСйствиС слСдуСт Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ символьной ΠΏΠ°Ρ€ΠΎΠΉ \; -ok ΠΊΠΎΠΌΠ°Π½Π΄Π° Подобно Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ exec, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ выводится подсказка для получСния подтвСрТдСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π­Ρ‚ΠΎ дСйствиС слСдуСт Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ символьной ΠΏΠ°Ρ€ΠΎΠΉ \; -print Π’Ρ‹Π²ΠΎΠ΄ Π½Π° экран ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° -ls ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls -dils ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ

Команда Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… -exec ΠΈ -ok ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² строкС ΠΊΠ°ΠΊ собствСнныС, ΠΏΠΎΠΊΠ° Π½Π΅ встрСтится ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ \; Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… -exec ΠΈ -ok выполняСт Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, поэтому встроСнная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ экранированной Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π° find ΠΌΠΎΠ³Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π΅ΠΉ слСдуСт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ поиск Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Π½Π΅Π΅ самой. ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠ°Ρ строка {} β€” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° для ΠΊΠΎΠΌΠ°Π½Π΄ -exec ΠΈ -ok, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ замСняСтся ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ.

ОбъяснСниС, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ слишком Π»Π΅Π³ΠΊΠΎΠ΅ для понимания, поэтому рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ внСсти ΡΡΠ½ΠΎΡΡ‚ΡŒ. ВзглянитС Π½Π° простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ls:

$ find . -newer while2 -type f -exec ls -l  {} \;

-rwxr-xr-x 1 rick rick  275 Feb 8 17:07 ./elif3

-rwxr-xr-x 1 rick rick  336 Feb 8 16:52 ./words.txt

-rwxr-xr-x 1 rick rick 1274 Feb 8 16:52 ./words2.txt

-rwxr-xr-x 1 rick rick  504 Feb 8 18:43 ./_trap

$

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΠΌΠ°Π½Π΄Π° find Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°; ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ нСбольшой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для ΡƒΠΌΠ΅Π»ΠΎΠ³ΠΎ Π΅Π΅ примСнСния. И такая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΊΠ°ΠΊ ΠΈ экспСримСнты с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ find, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ принСсСт Π΄ΠΈΠ²ΠΈΠ΄Π΅Π½Π΄Ρ‹.

Команда grep

Вторая ΠΎΡ‡Π΅Π½ΡŒ полСзная ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ рассмотрСния, β€” это ΠΊΠΎΠΌΠ°Π½Π΄Π° grep. НСобычноС имя, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (general regular expression parser). Π’Ρ‹ примСняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ find для поиска Ρ„Π°ΠΉΠ»ΠΎΠ² Π² вашСй систСмС, Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ grep для поиска строк Π² Π²Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ…. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ часто ΠΏΡ€ΠΈ использовании ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ find ΠΊΠΎΠΌΠ°Π½Π΄Π° grep пСрСдаСтся послС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° -exec.

Команда grep ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΈ, шаблон соотвСтствия ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ для поиска:

grep [ΠΎΠΏΡ†ΠΈΠΈ] шаблон [Ρ„Π°ΠΉΠ»Ρ‹]

Если ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π΅ Π·Π°Π΄Π°Π½Ρ‹, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ стандартный Π²Π²ΠΎΠ΄.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с изучСния основных ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep. И Π½Π° этот Ρ€Π°Π· Π² Ρ‚Π°Π±Π». 2.14 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ…; ΠΏΠΎΠ»Π½Ρ‹ΠΉ список см. Π½Π° страницах ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ справочного руководства.


Π’Π°Π±Π»ΠΈΡ†Π° 2.14

ΠžΠΏΡ†ΠΈΡ ОписаниС -с ВмСсто Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран ΡΠΎΠ²ΠΏΠ°Π²ΡˆΠΈΡ… с шаблоном строк Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… количСство -E Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ рСгулярныС выраТСния -h Π£ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π° счСт удалСния ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строка Π½Π°ΠΉΠ΄Π΅Π½Π° -i НС ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ рСгистр Π±ΡƒΠΊΠ² -l ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΠ΅Ρ‚ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² со строками, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ с шаблоном; Π½Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сами Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ строки -v ΠœΠ΅Π½ΡΠ΅Ρ‚ шаблон соотвСтствия для Π²Ρ‹Π±ΠΎΡ€Π° вмСсто строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… с Π½ΠΈΠΌ строк

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.17.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 2.17. Основной Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ grep Π² дСйствии Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… простых шаблонов.

$ grep in words.txt

When shall we three meet again. In thunder, lightning, or in rain?

I come, Graymalkin!

$ grep -c in words.txt words2.txt

words.txt:2 words2.txt:14

$ grep -c -v in words.txt words2.txt

words.txt:9

words2.txt:16$

Как это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΉ; Π² Π½Π΅ΠΌ просто ищСтся строка in Π² Ρ„Π°ΠΉΠ»Π΅ words.txt ΠΈ выводятся Π½Π° экран Π»ΡŽΠ±Ρ‹Π΅ строки, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ поиска. Имя Ρ„Π°ΠΉΠ»Π° Π½Π΅ отобраТаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ поиск вСлся Π² СдинствСнном Ρ„Π°ΠΉΠ»Π΅.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… подсчитываСтся количСство строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π’ этом случаС ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² выводятся Π½Π° экран.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ примСняСтся опция -v для инвСртирования критСрия поиска ΠΈ подсчСта строк, Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… с шаблоном.

РСгулярныС выраТСния

Как Π²Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡŒ, основной Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ примСнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep Π»Π΅Π³ΠΊΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ основы построСния рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π²Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТный поиск. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅, рСгулярныС выраТСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² систСмС Linux ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… языках программирования с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ vi ΠΈ Π² скриптах Π½Π° языкС Perl, примСняя ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΎΠ±Ρ‰ΠΈΠ΅ для рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π³Π΄Π΅ Π±Ρ‹ ΠΎΠ½ΠΈ Π½ΠΈ появлялись.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ символы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π’ Ρ‚Π°Π±Π». 2.15 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² рСгулярных выраТСниях символы.


Π’Π°Π±Π»ΠΈΡ†Π° 2.15

Π‘ΠΈΠΌΠ²ΠΎΠ» ОписаниС ^ ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ строки $ ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ строки . Π›ΡŽΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ символ [] Π’ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках содСрТится Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ символов, с Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ совпадСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ символов a-e ΠΈΠ»ΠΈ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стоит символ ^

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ· пСрСчислСнных символов ΠΊΠ°ΠΊ "ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅", ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ символ \. НапримСр, Ссли Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ символ $, просто Π²Π²Π΅Π΄ΠΈΡ‚Π΅ \$.

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Ρ… шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках (Ρ‚Π°Π±Π». 2.16).


Π’Π°Π±Π»ΠΈΡ†Π° 2.16

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ шаблон ОписаниС [:alnum:] Π‘ΡƒΠΊΠ²Π΅Π½Π½ΠΎ-Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ символы [:alpha:] Π‘ΡƒΠΊΠ²Ρ‹ [:ascii:] Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ASCII [:blank:] ΠŸΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ табуляция [:cntrl:] Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы ASCII [:digit:] Π¦ΠΈΡ„Ρ€Ρ‹ [:graph:] ΠΠ΅ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΈ Π½Π΅ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы [:lower:] Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ [:print:] ΠŸΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Π΅ символы [:punct:] Π—Π½Π°ΠΊΠΈ ΠΏΡƒΠ½ΠΊΡ‚ΡƒΠ°Ρ†ΠΈΠΈ [:space:] ΠŸΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π°Π±ΡƒΠ»ΡΡ†ΠΈΡŽ [:upper:] ΠŸΡ€ΠΎΠΏΠΈΡΠ½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ [:xdigit:] ШСстнадцатиричныС Ρ†ΠΈΡ„Ρ€Ρ‹

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π·Π°Π΄Π°Π½Π° опция =E для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ соотвСтствия, Π·Π° рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ символы, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° соотвСтствиС ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ (Ρ‚Π°Π±Π». 2.17). Π’ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ grep ΠΏΠ΅Ρ€Π΅Π΄ этими символами Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ символ \.


Π’Π°Π±Π»ΠΈΡ†Π° 2.17

ΠžΠΏΡ†ΠΈΡ  ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ ? Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π° * БовпадСния ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ + Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌ {n} Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ n Ρ€Π°Π· {n, } Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ n Ρ€Π°Π· ΠΈ большС {n, m} Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ n Π΄ΠΎ m Ρ€Π°Π· Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

ВсС это выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎ, Π½ΠΎ Ссли ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ всС возмоТности постСпСнно, Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС Π½Π΅ Ρ‚Π°ΠΊ слоТно, ΠΊΠ°ΠΊ каТСтся Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π‘Π°ΠΌΡ‹ΠΉ Π»Π΅Π³ΠΊΠΈΠΉ способ ΠΏΠΎΠ½ΡΡ‚ΡŒ рСгулярныС выраТСния β€” просто ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСсколько.