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

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

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

-s строка

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ строку Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚ тСкста строки. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ символ табуляции

-v число

НомСр ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ логичСской страницС. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1

-w ΡˆΠΈΡ€ΠΈΠ½Π°

Π¨ΠΈΡ€ΠΈΠ½Π° поля Π½ΠΎΠΌΠ΅Ρ€Π° строки. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 6


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

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

1 i\

\\:\\:\\:\

\

Linux Distributions Report\

\

Name Ver. Released\

---- ---- --------\

\\:\\:

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

$ a\

\\:\

\

End Of Report

Новый сцСнарий вставляСт Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ логичСских страниц для nl ΠΈ добавляСт Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ» Π² ΠΊΠΎΠ½Π΅Ρ† ΠΎΡ‚Ρ‡Π΅Ρ‚Π°. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ символы ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ слСша Π² Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ sed ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ символы.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‡Π΅Ρ‚, объСдинив sort, sed ΠΈ nl:

[ [email protected] ~]$ sort -k 1,1 -k 2n distros.txt | sed -f distros-nl.sed | nl

Linux Distributions Report

Name Ver. Released

---- ---- --------

1 Fedora 5 2006-03-20

2 Fedora 6 2006-10-24

3 Fedora 7 2007-05-31

4 Fedora 8 2007-11-08

5 Fedora 9 2008-05-13

6 Fedora 10 2008-11-25

7 SUSE 10.1 2006-05-11

8 SUSE 10.2 2006-12-07

9 SUSE 10.3 2007-10-04

10 SUSE 11.0 2008-06-19

11 Ubuntu 6.06 2006-06-01

12 Ubuntu 6.10 2006-10-26

13 Ubuntu 7.04 2007-04-19

14 Ubuntu 7.10 2007-10-18

15 Ubuntu 8.04 2008-04-24

16 Ubuntu 8.10 2008-10-30

End Of Report

Наш ΠΎΡ‚Ρ‡Π΅Ρ‚ являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ объСдинСния Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΌΠ°Π½Π΄. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ отсортировали список ΠΏΠΎ названиям дистрибутивов ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ вСрсий (поля 1 ΠΈ 2), Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ sed, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ логичСских страниц для nl) ΠΈ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½Ρ‚ΠΈΡ‚ΡƒΠ». Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ nl, которая ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΡƒΠΌΠ΅Ρ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ тСкста, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Ρƒ с Ρ‚Π΅Π»ΠΎΠΌ логичСской страницы.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ nl. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

nl -n rz

ΠΈ

nl -w 3 -s ' '

fold β€” пСрСнос строк послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹


ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ строк Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·Ρ€Ρ‹Π²Π΅ тСкстовых строк ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅. Подобно Π΄Ρ€ΡƒΠ³ΠΈΠΌ рассматриваСмым ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, fold ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π°. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ fold простой ΠΏΠΎΡ‚ΠΎΠΊ тСкста, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½Π° дСйствуСт:

[ [email protected] ~]$ echo "The quick brown fox jumped over the lazy dog." | fold -w 12

The quick br

own fox jump

ed over the

lazy dog.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ дСйствуСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° fold. ВСкст, посланный ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ echo, Π±Ρ‹Π» Ρ€Π°Π·Π±ΠΈΡ‚ Π½Π° сСгмСнты ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ -w ΡˆΠΈΡ€ΠΈΠ½Ρ‹. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ строк 12 символами. Если ΡˆΠΈΡ€ΠΈΠ½Π° Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π°, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° принимаСтся Ρ€Π°Π²Π½ΠΎΠΉ 80 символам. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ строки Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° Π³Ρ€Π°Π½ΠΈΡ† слов. Π”ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -s, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ fold Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎ послСднСму доступному ΠΏΡ€ΠΎΠ±Π΅Π»Ρƒ ΠΏΠ΅Ρ€Π΅Π΄ достиТСниСм ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Ρ‹:

[ [email protected] ~]$ echo "The quick brown fox jumped over the lazy dog." | fold -w 12 -s

The quick

brown fox

jumped over

the lazy

dog.

fmt β€” простоС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста


ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° fmt Ρ‚Π°ΠΊΠΆΠ΅ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пСрСнос строк плюс ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅. Она ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ со стандартного Π²Π²ΠΎΠ΄Π° ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π±Π·Π°Ρ†Ρ‹ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ тСкста. По сути, ΠΎΠ½Π° заполняСт ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ строки, сохраняя пустыС строки ΠΈ отступы.

Для дСмонстрации Π½Π°ΠΌ понадобится Π½Π΅ΠΊΠΈΠΉ тСкст. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ· Info-страницы для fmt:

`fmt' Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ тСкст ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ FILE (ΠΈΠ»ΠΈ со

стандартного Π²Π²ΠΎΠ΄Π°, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚), ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π² стандартный Π²Ρ‹Π²ΠΎΠ΄.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустыС строки, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ словами ΠΈ отступы

ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅; ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ отступами Π½Π΅

ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ; символы табуляции Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ

числом ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ выводятся Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅.

`fmt' стараСтся Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎ ΠΊΠΎΠ½Ρ†Π°ΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ стрСмится

Π½Π΅ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ строки послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ послСдним

словом Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ. "ΠšΠΎΠ½Π΅Ρ† прСдлоТСния" опрСдСляСтся Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΊΠΎΠ½Ρ†Ρƒ

Π°Π±Π·Π°Ρ†Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎ слову, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΌΡƒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· символов `.?!', Π·Π°

ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΈΠ»ΠΈ символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, Π»ΡŽΠ±Ρ‹Π΅

скобки ΠΈΠ»ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ этом ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Подобно TΠ•X, `fmt' Ρ‡ΠΈΡ‚Π°Π΅Ρ‚

"Π°Π±Π·Π°Ρ†Ρ‹" Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пСрСнос строк; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π”ΠΎΠ½Π°Π»ΡŒΠ΄ΠΎΠΌ Π­. ΠšΠ½ΡƒΡ‚ΠΎΠΌ

(Donald E. Knuth) ΠΈ ΠœΠΈΡ…Π°ΡΠ»Π΅ΠΌ Π€. Плассом (Michael F. Plass) Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅

"Breaking Paragraphs Into Lines", `Software--Practice & Experience'

11, 11 (November 1981), 1119-1184.

Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ этот тСкст Π² тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ сохранитС Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ fmt-info.txt. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот тСкст, умСстив Π΅Π³ΠΎ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ 50 символов. Π Π΅ΡˆΠΈΡ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ fmt ΠΈ Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -w:

[ [email protected] ~]$ fmt -w 50 fmt-info.txt | head

`fmt’ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ тСкст ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ

Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ FILE (ΠΈΠ»ΠΈ со

стандартного Π²Π²ΠΎΠ΄Π°, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚),

ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² стандартный Π²Ρ‹Π²ΠΎΠ΄.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустыС строки, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ

словами ΠΈ отступы

ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅; ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки с

Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ отступами Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ; символы

табуляции Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ особСнно впСчатляСт. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, стоит ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ этот тСкст, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ происходящСС:

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустыС строки, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ словами ΠΈ отступы ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅; ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ отступами Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ; символы табуляции Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ числом ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ выводятся Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅.

Π˜Ρ‚Π°ΠΊ, fmt сохраняСт отступ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, fmt ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ это:

[ [email protected] ~]$ fmt -cw 50 fmt-info.txt

`fmt' Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ тСкст ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ

Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ FILE (ΠΈΠ»ΠΈ со стандартного Π²Π²ΠΎΠ΄Π°,

Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚), ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

Π² стандартный Π²Ρ‹Π²ΠΎΠ΄.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пустыС строки, ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ

словами ΠΈ отступы ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅;

ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ отступами Π½Π΅

ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ; символы табуляции Π½Π° Π²Ρ…ΠΎΠ΄Π΅

Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ числом ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ

выводятся Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅.

`fmt' стараСтся Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ строки ΠΏΠΎ ΠΊΠΎΠ½Ρ†Π°ΠΌ

ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ стрСмится Π½Π΅ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ строки

послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ послСдним

словом Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ. "ΠšΠΎΠ½Π΅Ρ† прСдлоТСния"

опрСдСляСтся Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΊΠΎΠ½Ρ†Ρƒ Π°Π±Π·Π°Ρ†Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎ

слову, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰Π΅ΠΌΡƒΡΡ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· символов `.?!',

Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π΄Π²Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π° ΠΈΠ»ΠΈ символ

ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки, Π»ΡŽΠ±Ρ‹Π΅ скобки ΠΈΠ»ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ

этом ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Подобно TeX, `fmt' Ρ‡ΠΈΡ‚Π°Π΅Ρ‚

"Π°Π±Π·Π°Ρ†Ρ‹" Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ пСрСнос

строк; ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°,

ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π”ΠΎΠ½Π°Π»ΡŒΠ΄ΠΎΠΌ Π­. ΠšΠ½ΡƒΡ‚ΠΎΠΌ (Donald

E. Knuth) ΠΈ ΠœΠΈΡ…Π°ΡΠ»Π΅ΠΌ Π€. Плассом (Michael

F. Plass) Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ "Breaking Paragraphs Into

Lines", `Software--Practice & Experience' 11,

11 (November 1981), 1119-1184.

Намного Π»ΡƒΡ‡ΡˆΠ΅. Π”ΠΎΠ±Π°Π²ΠΈΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -c, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° fmt содСрТит нСсколько интСрСсных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пСрСчислСны Π² Ρ‚Π°Π±Π». 21.3.

Π’Π°Π±Π»ΠΈΡ†Π° 21.3. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ fmt

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

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

-c

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ края (crown margin). Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ сохраняСтся отступ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… строк Π°Π±Π·Π°Ρ†Π°. ΠŸΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС

-p строка

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ со строки, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅. ПослС форматирования содСрТимоС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° добавляСтся Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ строки. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для форматирования тСкста ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² исходном ΠΊΠΎΠ΄Π΅. НапримСр, любой сцСнарий ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π³Π΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа #, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ fmt с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -p '# ', Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ приводится Π½ΠΈΠΆΠ΅

-s

Π Π΅ΠΆΠΈΠΌ простой Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠΈ. Π’ этом Ρ€Π΅ΠΆΠΈΠΌΠ΅ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° строк ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅. ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ строки Π½Π΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для форматирования исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° объСдинСниС ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… строк Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ

-u

ΠΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ примСняСтся для форматирования Π² стандартном «машинописном стилС», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ³Π΄Π° слова ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ, Π° прСдлоТСния β€” двумя. Π­Ρ‚ΠΎΡ‚ Ρ€Π΅ΠΆΠΈΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для удалСния Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… с Ρ†Π΅Π»ΡŒΡŽ выравнивания тСкста ΠΏΠΎ ΠΎΠ±ΠΎΠΈΠΌ краям