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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Командная строка LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 71

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

([0-9]{2})/([0-9]{2})/([0-9]{4})$

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ подвыраТСния. ΠŸΠ΅Ρ€Π²ΠΎΠΌΡƒ соотвСтствуСт мСсяц, Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ β€” число мСсяца ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌΡƒ β€” Π³ΠΎΠ΄. БоотвСтствСнно строку Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

\3-\1-\2

Ρ‡Ρ‚ΠΎ даст Π½Π°ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: Π³ΠΎΠ΄, дСфис, мСсяц, дСфис, число мСсяца.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ наша ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

sed 's/([0-9]{2})/([0-9]{2})/([0-9]{4})$/\3-\1-\2/' distros.txt

Но ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ΠŸΠ΅Ρ€Π²Π°Ρ: Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слСши Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π·Π°ΠΏΡƒΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ sed, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° попытаСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ s. Вторая: Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ sed ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ простыС рСгулярныС выраТСния, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы Π² нашСм рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹, Π° Π½Π΅ ΠΊΠ°ΠΊ мСтасимволы. ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠΌ ΠΎΠ±Π΅ Β­ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² символы ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша для экранирования Π½ΡƒΠΆΠ½Ρ‹Ρ… символов:

sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/' distros.txt

И дСло в шляпС!

Другая ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ s β€” Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² вслСд Π·Π° строкой Π·Π°ΠΌΠ΅Π½Ρ‹. НаиболСС ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ… являСтся Ρ„Π»Π°Π³ g, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ sed ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ поиск с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ ΠΊ строкС глобально (globally), Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΌΡƒ совпадСнию, ΠΊΠ°ΠΊ это дСлаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

НапримСр:

[[email protected] ~]$ echo "aaabbbccc" | sed 's/b/B/'

aaaBbbccc

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π·Π°ΠΌΠ΅Π½Π° Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ вхоТдСния Π±ΡƒΠΊΠ²Ρ‹ b, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ. Π”ΠΎΠ±Π°Π²ΠΈΠ² Ρ„Π»Π°Π³ g, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС вхоТдСния:

[[email protected] ~]$ echo "aaabbbccc" | sed 's/b/B/g'

aaaBBBccc

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ sed Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Однако сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΊΠΎΠΌΠ°Π½Β­Π΄Ρ‹ Π² Ρ„Π°ΠΉΠ»Π°Ρ… сцСнариСв ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ эти сцСнарии с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -f. Для дСмонстрации создадим с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sed ΠΎΡ‚Ρ‡Π΅Ρ‚ Π½Π° основС нашСго Ρ„Π°ΠΉΠ»Π° distros.txt. ΠžΡ‚Ρ‡Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π²Π΅Ρ€Ρ…Ρƒ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‹ ΠΈ названия дистрибутивов Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр. Для этого Π½Π°ΠΌ понадобится Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарий, поэтому запуститС тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

# Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ для sed, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ дистрибутивах Linux

1 i\

\

Linux Distributions Report\

s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ сцСнарий Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ distros.sed ΠΈ запуститС Π΅Π³ΠΎ:

[[email protected] ~]$ sed -f distros.sed distros.txt

Linux Distributions Report

SUSEΒ Β Β Β Β Β Β Β Β Β Β Β Β 10.2Β Β Β Β 2006-12-07

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 10Β Β Β Β Β Β 2008-11-25

SUSEΒ Β Β Β Β Β Β Β Β Β Β Β Β 11.0Β Β Β Β 2008-06-19

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 8.04Β Β Β Β 2008-04-24

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 8Β Β Β Β Β Β Β 2007-11-08

SUSEΒ Β Β Β Β Β Β Β Β Β Β Β Β 10.3Β Β Β Β 2007-10-04

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 6.10Β Β Β Β 2006-10-26

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 7Β Β Β Β Β Β Β 2007-05-31

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 7.10Β Β Β Β 2007-10-18

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 7.04Β Β Β Β 2007-04-19

SUSEΒ Β Β Β Β Β Β Β Β Β Β Β Β 10.1Β Β Β Β 2006-05-11

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 6Β Β Β Β Β Β Β 2006-10-24

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 9Β Β Β Β Β Β Β 2008-05-13

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 6.06Β Β Β Β 2006-06-01

UBUNTUΒ Β Β Β Β Β Β Β Β Β Β 8.10Β Β Β Β 2008-10-30

FEDORAΒ Β Β Β Β Β Β Β Β Β Β 5Β Β Β Β Β Β Β 2006-03-20

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, сцСнарий Π²Ρ‹Π΄Π°Π» ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ это сдСлал? Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ. Π’Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ cat Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π»Π° строки.

[[email protected] ~]$ cat -n distros.sed

Β Β Β Β 1Β Β Β # Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ для sed, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ дистрибутивах Linux

Β Β Β Β 2

Β Β Β Β 3Β Β Β 1 i\

Β Β Β Β 4Β Β Β \

Β Β Β Β 5Β Β Β Linux Distributions Report\

Β Β Β Β 6

Β Β Β Β 7Β Β Β s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/

Β Β Β Β 8Β Β Β y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

Π‘Ρ‚Ρ€ΠΎΠΊΠ° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1 β€” это ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ языках программирования, ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Linux, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа #, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ тСкст. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² сцСнарии Π² любоС мСсто (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ Π² сами ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹), ΠΈ ΠΎΠ½ΠΈ, бСзусловно, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для всСх, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ особСнности Ρ€Π°Π±ΠΎΡ‚Ρ‹ сцСнария ΠΈΠ»ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 β€” это пустая строка. Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ пустыС строки для удобочитаСмости.

МногиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ sed ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π°Π΄Ρ€Π΅ΡΠ°Ρ†ΠΈΡŽ строк. АдрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ строкам Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ примСняСтся опСрация. АдрСса ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ простых Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² строк, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° $, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ послСднСй Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкС.

Π’ строках с 3-ΠΉ ΠΏΠΎ 6-ю содСрТится тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ вставлСн ΠΏΠΎ адрСсу 1, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку. Команда i, сопровоТдаСмая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ экранированный символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°, ΠΈΠ»ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ символом продолТСния строки. Π­Ρ‚Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π² сцСнариях Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, позволяя Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки Π² ΠΏΠΎΡ‚ΠΎΠΊ тСкста Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π΅ воспринимался ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ sed) ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅Ρ† строки. Команда i, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° a (добавлСния тСкста Π² ΠΊΠΎΠ½Π΅Ρ†) ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° c (Π·Π°ΠΌΠ΅Π½Ρ‹ тСкста), ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках тСкста, ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ каТдая ΠΈΠ· Π½ΠΈΡ…, ΠΊΡ€ΠΎΠΌΠ΅ послСднСй, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒΡΡ символом продолТСния строки. ШСстая строка Π² нашСм сцСнарии фактичСски Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ вставляСмый тСкст ΠΈ заканчиваСтся ΡƒΠΆΠ΅ Π½Π΅ символом продолТСния строки, Π° простым ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ строки, сообщая ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ i.

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

Π‘ΠΈΠΌΠ²ΠΎΠ» продолТСния строки формируСтся ΠΈΠ· ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ сразу Π·Π° Π½ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки. Никаких ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 7 β€” наша ΠΊΠΎΠΌΠ°Π½Π΄Π° поиска с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΠΉ Π½Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ адрСс, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 8 выполняСт ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π±ΡƒΠΊΠ² Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра Π² Π±ΡƒΠΊΠ²Ρ‹ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ tr, ΠΊΠΎΠΌΠ°Π½Π΄Π° y Π² sed Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ символов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, [a-z]), Π½ΠΈ классы символов POSIX. И снова, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ y Π½Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ адрСс, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅.

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ sed Ρ‚Π°ΠΊΠΆΠ΅ часто Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚...

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° sed ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌΠΈ возмоТностями. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ вСсьма слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ, связанныС с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ° тСкста. Но Ρ‡Π°Ρ‰Π΅ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… укладываСтся Π² ΠΎΠ΄Π½Ρƒ строку. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты. НаиболСС популярными ΠΈΠ· Π½ΠΈΡ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ awk ΠΈ perl. Они Π½Π΅ относятся ΠΊ разряду простых инструмСнтов, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, обсуТдаСмыС здСсь, Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΌΠΈ языками программирования. perl, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, часто примСняСтся Π²Π·Π°ΠΌΠ΅Π½ языка ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡ систСмного администрирования, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ большой ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠ°ΠΊ срСдство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. awk ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния. ОсновноС Π΅Π³ΠΎ достоинство Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² возмоТности управлСния Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Он Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ sed Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° awk ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ построчной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ схСму, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° адрСса Π² sed со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π·Π° Π½ΠΈΠΌΠΈ опСрациями. Π”Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ обсуТдСниС awk ΠΈ perl Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ этой ΠΊΠ½ΠΈΠ³ΠΈ, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ инструмСнтами для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π² Linux.

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

ПослСдний инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим Π² этой Π³Π»Π°Π²Π΅, β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° aspell, ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ срСдство ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° aspell являСтся ΠΏΡ€Π΅Π΅ΠΌΠ½ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ispell, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠ΅ΠΉ ΠΏΡ€Π΅ΠΆΠ΄Π΅, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π΅Π΅ Π·Π°ΠΌΠ΅Π½Π°. Π§Π°Ρ‰Π΅ всСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° aspell ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° функция ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ€Ρ„ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ aspell ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ вСсьма эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Она способна ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ HTML, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° C/C++, элСктронныС письма ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ тСкста.