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

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

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

[ [email protected] ~]$ for i in {1..10}; do echo "(${RANDOM:0:3}) ${RANDOM:0:3}-${RANDOM:0:4}" >> phonelist.txt; done

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаст Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ phonelist.txt, содСрТащий 10 Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². Если ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, ΠΎΠ½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π² список Π΅Ρ‰Π΅ 10 Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ число 10 Π±Π»ΠΈΠΆΠ΅ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ большС ΠΈΠ»ΠΈ мСньшС Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ². Однако Ссли Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ», ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ:

[ [email protected] ~]$ cat phonelist.txt

(232) 298-2265

(624) 381-1078

(540) 126-1980

(874) 163-2885

(286) 254-2860

(292) 108-518

(129) 44-1379

(458) 273-1642

(686) 299-8268

(198) 307-2440

НСкоторыС Π½ΠΎΠΌΠ΅Ρ€Π° ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Ρ‹ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ для Ρ†Π΅Π»Π΅ΠΉ дСмонстрации ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ grep.

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΎΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² поисках нСдопустимых Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈ вывСсти ΠΈΡ….

[ [email protected] ~]$ grep -Ev '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$' phonelist.txt

(292) 108-518

(129) 44-1379

[ [email protected] ~]$

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ использовали ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -v, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ сопоставлСниС ΠΈ вывСсти Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки, Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ.

Π‘Π°ΠΌΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ содСрТит якорныС мСтасимволы Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΈ Ρ‚Π΅ΠΌ самым Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ отсутствиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов слСва ΠΈ справа ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅, это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ наличия ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок Π² Π½ΠΎΠΌΠ΅Ρ€Π΅.

Поиск Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ find


Команда find ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. БущСствуСт ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ рСгулярныС выраТСния Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… find ΠΈ grep. Если grep Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ совпадСниС с рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ find Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ совпадСния ΠΏΡƒΡ‚ΠΈ с рСгулярным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° find ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поиска ΠΏΡƒΡ‚Π΅ΠΉ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, содСрТащим Π»ΡŽΠ±Ρ‹Π΅ символы, Π½Π΅ входящиС Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ мноТСство:

[-_./0-9a-zA-Z]

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ поиска ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², содСрТащиС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Ρ€Π΅Π΄Π½Ρ‹Π΅ символы:

[ [email protected] ~]$ find . -regex '.*[^-_./0-9a-zA-Z].*'

Из-Π·Π° трСбования Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ совпадСния всСго ΠΏΡƒΡ‚ΠΈ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ элСмСнт .* с ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†ΠΎΠ² выраТСния, Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΉ любоС количСство Π»ΡŽΠ±Ρ‹Ρ… символов (Π² Ρ‚ΠΎΠΌ числС ΠΈ отсутствиС символов). Π’ сСрСдинС выраТСния находится ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, содСрТащСС мноТСство символов, допустимых Π² ΠΈΠΌΠ΅Π½Π°Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².

Поиск Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ locate


ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° locate ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ простыС (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --regexp) ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ --regex) рСгулярныС выраТСния. Благодаря этому ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π²Ρ‹ΡˆΠ΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ dirlist:

[ [email protected] ~]$ locate --regex β€šbin/(bz|gz|zip)'

/bin/bzcat

/bin/bzcmp

/bin/bzdiff

/bin/bzegrep

/bin/bzexe

/bin/bzfgrep

/bin/bzgrep

/bin/bzip2

/bin/bzip2recover

/bin/bzless

/bin/bzmore

/bin/gzexe

/bin/gzip

/usr/bin/zip

/usr/bin/zipcloak

/usr/bin/zipgrep

/usr/bin/zipinfo

/usr/bin/zipnote

/usr/bin/zipsplit

Использовав Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΡ‹ нашли ΠΏΡƒΡ‚ΠΈ, содСрТащиС bin/bz, bin/gz ΠΈΠ»ΠΈ /bin/zip.

Поиск тСкста Π² less ΠΈ vim


less ΠΈ vim ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ способы поиска Π² тСкстС. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ поиск, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ / ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ less, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° phonelist.txt:

[ [email protected] ~]$ less phonelist.txt

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ поиск с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ выраТСния для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

(232) 298-2265

(624) 381-1078

(540) 126-1980

(874) 163-2885

(286) 254-2860

(292) 108-518

(129) 44-1379

(458) 273-1642

(686) 299-8268

(198) 307-2440

~

~

~

/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$

less Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ строки с совпадСниями, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ сразу ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ нСдопустимыС Π½ΠΎΠΌΠ΅Ρ€Π°:

(232) 298-2265

(624) 381-1078

(540) 126-1980

(874) 163-2885

(286) 254-2860

(292) 108-518

(129) 44-1379

(458) 273-1642

(686) 299-8268

(198) 307-2440

~

~

~

(END)

Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ vim ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыС рСгулярныС выраТСния, поэтому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для поиска Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

/([0-9]\{3\}) [0-9]\{3\}-[0-9]\{4\}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ практичСски Ρ‚ΠΎ ΠΆΠ΅ самоС; различия обусловлСны лишь Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ вСрсии Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ мСтасимволами, Π² простой вСрсии ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹. Они Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ мСтасимволы, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… символом ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… настроСк vim совпадСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Если совпадСния Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ :hlsearch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска.

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

Π’ Ρ€Π°Π·Π½Ρ‹Ρ… дистрибутивах vim ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ подсвСтку Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² поиска Π² тСкстС. Π’ Ubuntu, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° сильно упрощСнная вСрсия vim. Π’ Ρ‚Π°ΠΊΠΈΡ… систСмах Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ vim с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ диспСтчСра ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅


Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрСли нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² использования рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. ΠšΡ€ΡƒΠ³ практичСского примСнСния рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ большС, Ссли Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для поиска Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… прилоТСниях, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. НапримСр, с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск Π½Π° страницах справочного руководства:

[ [email protected] ~]$ cd /usr/share/man/man1

[ [email protected] man1]$ zgrep -El 'regex|regular expression' *.gz

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° zgrep Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс ΠΊ grep, позволяя Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ сТатыС Ρ„Π°ΠΉΠ»Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся поиск Π² сТатых Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° справочного руководства. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ список Ρ„Π°ΠΉΠ»ΠΎΠ², содСрТащих строку regex ΠΈΠ»ΠΈ regular expression. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, рСгулярныС выраТСния ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ мноТСством ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ рСгулярныС выраТСния ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΉ интСрСсной ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ пропустили, β€” ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ссылками (back references). Они Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

20. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° тСкста


ВсС Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΈΠΌ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ΅ большоС Ρ€Π°Π·Π½ΠΎΒ­ΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ инструмСнтов ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для выполнСния самых Ρ€Π°Π·Π½Ρ‹Ρ… манипуляций с тСкстом. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ знакомство со срСдствами ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста, ΡƒΠ΄Π΅Π»ΠΈΠ² большС внимания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ форматирования тСкста ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ потрСбности Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ рассмотрим ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ познакомимся с Π½ΠΎΠ²Ρ‹ΠΌΠΈ:

β€’ cat β€” ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ… Π² стандартный Π²Ρ‹Π²ΠΎΠ΄.

β€’ sort β€” сортируСт строки ΠΈΠ· тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ².

β€’ uniq β€” сообщаСт ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ строках ΠΈΠ»ΠΈ удаляСт ΠΈΡ….

β€’ cut β€” удаляСт Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π² Ρ„Π°ΠΉΠ»Π°Ρ….

β€’ paste β€” выполняСт слияниС строк ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ².

β€’ join β€” ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ строки ΠΈΠ· Π΄Π²ΡƒΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ полю.

β€’ comm β€” выполняСт построчноС сравнСниС Π΄Π²ΡƒΡ… сортированных Ρ„Π°ΠΉΠ»ΠΎΠ².

β€’ diff β€” выполняСт построчноС сравнСниС Ρ„Π°ΠΉΠ»ΠΎΠ².

β€’ patch β€” примСняСт diff-Ρ„Π°ΠΉΠ» (Ρ„Π°ΠΉΠ» с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ сравнСния ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ diff) ΠΊ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Ρƒ.

β€’ tr β€” ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ»ΠΈ удаляСт символы.

β€’ sed β€” ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΈ прСобразования тСкста.

β€’ aspell β€” интСрактивная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ.

ΠžΠ±Π»Π°ΡΡ‚ΠΈ примСнСния тСкста


К настоящСму ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΌΡ‹ познакомились с ΠΏΠ°Ρ€ΠΎΠΉ тСкстовых Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (nano ΠΈ vim), рассмотрСли нСсколько ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… дСсятков ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈ всС это Π² тСкстовом Π²ΠΈΠ΄Π΅. А для Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ тСкст? Как оказываСтся, ΠΌΠ½ΠΎΠ³ΠΎ для Ρ‡Π΅Π³ΠΎ.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹


МногиС люди Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² простом тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, достаточно ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ простыС Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π² Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… тСкстовых Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈ большиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² простом тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Один ΠΈΠ· популярных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ большой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π² тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ для описания форматирования ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. МногиС Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ написаны ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ систСмы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста Π½Π° основС Unix Π±Ρ‹Π»ΠΈ Π² числС ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²ΡˆΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ типографичСского оформлСния, Ρ‚Π°ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ Π² тСхничСских дисциплинах.

Π’Π΅Π±-страницы


Π‘Π°ΠΌΡ‹ΠΌ популярным Π² ΠΌΠΈΡ€Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ элСктронных Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² являСтся, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π΅Π±-страниц. Π’Π΅Π±-страницы β€” это тСкстовыС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ HTML (Hypertext Markup Language β€” язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ гипСртСкста) ΠΈΠ»ΠΈ XML (Extensible Markup Language β€” Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΉ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ), ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°.

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°


ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π° являСтся тСкстовой срСдой ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅. Π”Π°ΠΆΠ΅ нСтСкстовыС влоТСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² тСкстовоС прСдставлСниС ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ. Π’ этом ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² элСктронноС письмо ΠΈ просмотрСв Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ less. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ письмо начинаСтся с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ отправитСля письма ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ сСрвСры, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π²ΡˆΠΈΠ΅ Π΅Π³ΠΎ Π² процСссС доставки, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Ρ‚Π΅Π»ΠΎ письма с Π΅Π³ΠΎ содСрТимым.

Π’Ρ‹Π²ΠΎΠ΄ Π½Π° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€


Π’ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСмах Π΄Π°Π½Π½Ρ‹Π΅ выводятся Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π² простом тСкстовом Π²ΠΈΠ΄Π΅, ΠΈΠ»ΠΈ, Ссли страница содСрТит Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ, ΠΎΠ½Π° прСобразуСтся Π² описаниС страницы Π² тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, извСстном ΠΊΠ°ΠΊ PostScript, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ посылаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ графичСскиС Ρ‚ΠΎΡ‡ΠΊΠΈ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅.