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

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

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

Команда

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

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

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с изучСния основных ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

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

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

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

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

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

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

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

$ <b>grep in words.txt</b>

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

I come, Graymalkin!

$ <b>grep -c in words.txt words2.txt</b>

words.txt:2 words2.txt:14

$ <b>grep -c -v in words.txt words2.txt</b>

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

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