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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка Linux. ПолноС руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 50

Автор Уильям Шоттс

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° grep ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

grep [ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹] рСгулярноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [Ρ„Π°ΠΉΠ»...]

Π’ Ρ‚Π°Π±Π». 19.1 пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ grep.

Π’Π°Π±Π»ΠΈΡ†Π° 19.1. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ grep

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€

ОписаниС

-i

Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгистр символов. Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ символы Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --ignore-case

-v

Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строки с совпадСниями. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ заставляСт grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ строки, Π½Π΅ содСрТащиС совпадСний. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --invert-match

-c

ВывСсти число совпадСний (ΠΈΠ»ΠΈ «нСсовпадСний») Π² присутствии ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -v вмСсто самих тСкстовых строк. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --count

-l

ВмСсто строк с совпадСниями Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌΠΈ строками. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --files-with-matches

-L

ДСйствуСт ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ -l, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π³Π΄Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ совпадСния. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --files-without-match

-n

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки с совпадСниСм вывСсти Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ„Π°ΠΉΠ»Π΅. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --line-number

-h

ΠŸΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΈ поискС ΠΏΠΎ нСскольким Ρ„Π°ΠΉΠ»Π°ΠΌ. Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --no-filename


Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим нСсколько тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ нашС исслСдованиС grep стало Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ:

[ [email protected] ~]$ ls /bin > dirlist-bin.txt

[ [email protected] ~]$ ls /usr/bin > dirlist-usr-bin.txt

[ [email protected] ~]$ ls /sbin > dirlist-sbin.txt

[ [email protected] ~]$ ls /usr/sbin > dirlist-usr-sbin.txt

[ [email protected] ~]$ ls dirlist*.txt

dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt

dirlist-usr-bin.txt

НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ простой поиск Π² нашСм спискС Ρ„Π°ΠΉΠ»ΠΎΠ²:

[ [email protected] ~]$ grep bzip dirlist*.txt

dirlist-bin.txt:bzip2

dirlist-bin.txt:bzip2recover

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ grep просматриваСт всС пСрСчислСнныС Ρ„Π°ΠΉΠ»Ρ‹ Π² поисках строки bzip ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄Π²Π° совпадСния, ΠΎΠ±Π° Π² Ρ„Π°ΠΉΠ»Π΅ dirlist-bin.txt. Если Π±Ρ‹ Π½Π°ΠΌ достаточно Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с совпадСниями, Π° Π½Π΅ сами совпадСния, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -l:

[ [email protected] ~]$ grep -l bzip dirlist*.txt

dirlist-bin.txt

Напротив, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Ρ„Π°ΠΉΠ»ΠΎΠ², Π½Π΅ содСрТащих совпадСний, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

[ [email protected] ~]$ grep -L bzip dirlist*.txt

dirlist-sbin.txt

dirlist-usr-bin.txt

dirlist-usr-sbin.txt

ΠœΠ΅Ρ‚Π°ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹ ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹


НСсмотря Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° это Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π²ΠΎ всСх своих ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… поиска с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep ΠΌΡ‹ использовали рСгулярныС выраТСния, хотя ΠΈ ΠΎΡ‡Π΅Π½ΡŒ простыС. РСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ bzip, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки Π² Ρ„Π°ΠΉΠ»Π°Ρ…, содСрТащиС Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… символов ΠΈ срСди этих символов ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ символы b, z, i ΠΈ p, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ порядкС ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ символы. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π² строкС bzip β€” это Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹Π΅ символы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ сами сСбС. Помимо Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² рСгулярныС выраТСния ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ мСтасимволы, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния Π±ΠΎΠ»Π΅Π΅ слоТных ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² сопоставлСния. К мСтасимволам рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ относятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ символы:

^ $ . [ ] { } - ? * + ( ) | \

ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ символы ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях символ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΌΠ΅Ρ‚Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для экранирования мСтасимволов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, Π° Π½Π΅ ΠΊΠ°ΠΊ мСтасимволы.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ мСтасимволы рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° подстановки ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, пСрСдавая рСгулярныС выраТСния с мСтасимволами Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, слСдуСт Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ подстановку вмСсто Π½ΠΈΡ….

Π›ΡŽΠ±ΠΎΠΉ символ


ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ мСтасимвол, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим, β€” это символ Ρ‚ΠΎΡ‡ΠΊΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π»ΡŽΠ±ΠΎΠΌΡƒ символу. Если Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ символу Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. НапримСр:

[ [email protected] ~]$ grep -h '.zip' dirlist*.txt

bunzip2

bzip2

bzip2recover

gunzip

gzip

funzip

gpg-zip

preunzip

prezip

prezip-bin

unzip

unzipsfx

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ поиск Π² Π½Π°ΡˆΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… совпадСний с рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ .zip. Π’ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°Ρ… имССтся ΠΏΠ°Ρ€Π° Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° zip Π½Π΅ Π±Ρ‹Π»Π° Π½Π°ΠΉΠ΄Π΅Π½Π°. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π² рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ мСтасимвола Ρ‚ΠΎΡ‡ΠΊΠΈ, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²ΡˆΠΈΠΌ Π΄Π»ΠΈΠ½Ρƒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ совпадСния Π΄ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… символов; Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ zip всСго Ρ‚Ρ€ΠΈ символа, ΠΎΠ½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π±Ρ‹ Π² Π½Π°ΡˆΠΈΡ… списках имСлись ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .zip, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π±Ρ‹ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ символ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° интСрпрСтировался Π±Ρ‹ ΠΊΠ°ΠΊ «любой символ».

Якоря


Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΡ€Ρ‹ΡˆΠΊΠΈ (^) ΠΈ Π·Π½Π°ΠΊ Π΄ΠΎΠ»Π»Π°Ρ€Π° ($) Π² рСгулярных выраТСниях ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ якоря. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ… присутствии совпадСниС с рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли совпадСниС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ строки (^) ΠΈΠ»ΠΈ Π² Π΅Π΅ ΠΊΠΎΠ½Ρ†Π΅ ($).

[ [email protected] ~]$ grep -h '^zip' dirlist*.txt

zip

zipcloak

zipgrep

zipinfo

zipnote

zipsplit

[ [email protected] ~]$ grep -h 'zip$' dirlist*.txt

gunzip

gzip

funzip

gpg-zip

preunzip

prezip

unzip

zip

[ [email protected] ~]$ grep -h '^zip$' dirlist*.txt

zip

Π—Π΄Π΅ΡΡŒ выполняСтся поиск Π² спискС Ρ„Π°ΠΉΠ»ΠΎΠ² строки zip, находящСйся Π² Π½Π°Ρ‡Π°Π»Π΅ строки, Π² ΠΊΠΎΠ½Ρ†Π΅ строки ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ всю строку, ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ^$ (Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ символов ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ) Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ пустым строкам.

Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»ΡΠΌ кроссвордов

Моя супруга ΠΎΠ±ΠΎΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π³Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ кроссворды ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° просит мСня ΠΏΠΎΠΌΠΎΡ‡ΡŒ с ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ вопрос. НапримСр: Β«Π‘Π»ΠΎΠ²ΠΎ ΠΈΠ· пяти Π±ΡƒΠΊΠ², Ρ‚Ρ€Π΅Ρ‚ΡŒΡ j, послСдняя r, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚...Β» ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ вопросы Π½Π°Π²Π΅Π»ΠΈ мСня Π½Π° Ρ€Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ.

Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Π² вашСй систСмС Linux имССтся ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ? ЗаглянитС Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /usr/share/dict, ΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‚Π°ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько словарСй. Π€Π°ΠΉΠ»Ρ‹ словарСй, на­ходящиСся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, β€” это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ списки слов, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π² строкС, упорядочСнныС ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ. Π’ ΠΌΠΎΠ΅ΠΉ систСмС Ρ„Π°ΠΉΠ» words содСрТит большС 98 500 слов. Найти Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° вопрос Π² кроссвордС ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

[ [email protected] ~]$ grep -i '^..j.r$' /usr/share/dict/words

Major

major

Π­Ρ‚ΠΎ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ словаря всС слова, Π΄Π»ΠΈΠ½ΠΎΠΉ Π² ΠΏΡΡ‚ΡŒ Π±ΡƒΠΊΠ², Π³Π΄Π΅ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Π±ΡƒΠΊΠ²Π° β€” j ΠΈ послСдняя β€” r.

ВыраТСния Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΠΈ классы символов


Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ возмоТности ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ совпадСниС с Π»ΡŽΠ±Ρ‹ΠΌ символом Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ выраТСния Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ совпадСниС с ΠΎΠ΄Π½ΠΈΠΌ символом ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ мноТСства. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мноТСство символов (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Π±Ρ‹ ΠΊΠ°ΠΊ мСтасимволы), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ мноТСство ΠΈΠ· Π΄Π²ΡƒΡ… символов, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ соотвСтствия с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡΠΌΠΈ bzip ΠΈ gzip:

[ [email protected] ~]$ grep -h '[bg]zip' dirlist*.txt

bzip2

bzip2recover

gzip

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ любоС число символов. ΠœΠ΅Ρ‚Π°ΡΠΈΠΌΠ²ΠΎΠ»Ρ‹, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, Ρ‚Π΅Ρ€ΡΡŽΡ‚ своС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π›ΠΈΡˆΡŒ Π΄Π²Π° мСтасимвола ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ½ΠΎΠΉ смысл. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” символ ΠΊΡ€Ρ‹ΡˆΠΊΠΈ (^), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния отрицания; Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” дСфис (-), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обозначСния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° символов.

ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅


Если сразу послС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ скобки стоит символ ΠΊΡ€Ρ‹ΡˆΠΊΠΈ (^), ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ символы мноТСства ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ нСдопустимыС Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ это, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

[ [email protected] ~]$ grep -h '[^bg]zip' dirlist*.txt

bunzip2

gunzip

funzip

gpg-zip

preunzip

prezip

prezip-bin

unzip

unzipsfx

Π’ΠΊΠ»ΡŽΡ‡ΠΈΠ² ΠΎΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ список Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТат ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ zip, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ любой символ, ΠΊΡ€ΠΎΠΌΠ΅ b ΠΈΠ»ΠΈ g. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» zip Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½. Π‘ΠΈΠΌΠ²ΠΎΠ» отрицания Π½Π΅ отмСняСт нСобходимости присутствия символа Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΎΠ½ лишь Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ символ Π² этой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π» ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ мноТСству.

Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΊΡ€Ρ‹ΡˆΠΊΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ отрицания, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли являСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ символом Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ тСряСт своС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ прСвращаСтся Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ символ.

Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ символов


Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎ Π±Ρ‹ Π² Π½Π°ΡˆΠΈΡ… списках всС Ρ„Π°ΠΉΠ»Ρ‹ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹, это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

[ [email protected] ~]$ grep -h '^[ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist*.txt

Достаточно просто ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ 26 Π±ΡƒΠΊΠ² Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках. Но Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° всСх этих символов Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ бСспокойство, поэтому прСдусмотрСн Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ:

[ [email protected] ~]$ grep -h '^[A-Z]' dirlist*.txt