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

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

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

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

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

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

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡˆΠΈΡ€ΠΈΠ½Π΅. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡˆΠΈΡ€ΠΈΠ½Π° 75 символов. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ fmt Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ строки Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠ±Π°Π»Π°Π½ΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ тСкста

ΠžΡΠΎΠ±Ρ‹ΠΉ интСрСс прСдставляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -p. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»Π°, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π², Ρ‡Ρ‚ΠΎ всС ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ символов. МногиС языки программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с символа Ρ€Π΅ΡˆΠ΅Ρ‚ΠΊΠΈ (#), ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ„Π°ΠΉΠ», ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с коммСнтариями:

[[email protected] ~]$ cat > fmt-code.txt

# Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠ΄ с коммСнтариями.

# Π­Ρ‚Π° строка - ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

# Π—Π° Π½Π΅ΠΉ слСдуСт другая строка с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ.

# И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°.

Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

И Π΅Ρ‰Π΅.

Π€Π°ΠΉΠ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° содСрТит ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ со строки #Β Β (символ # ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»), ΠΈ строки Β«ΠΊΠΎΠ΄Π°Β». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ fmt, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ ΠΊΠΎΠ΄:

[[email protected] ~]$ fmt -w 50 -p '# ' fmt-code.txt

# Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» содСрТит ΠΊΠΎΠ΄ с коммСнтариями.

# Π­Ρ‚Π° строка - ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. Π—Π° Π½Π΅ΠΉ слСдуСт другая

# строка с ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ. И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π°.

Π­Ρ‚ΠΎ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° строка с ΠΊΠΎΠ΄ΠΎΠΌ.

И Π΅Ρ‰Π΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ смСТныС строки ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹, Π° пустыС строки ΠΈ строки, Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ прСфикса, ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ.

pr β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ тСкста для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ

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

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ pr, форматируя наш Ρ„Π°ΠΉΠ» distros.txt Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… страниц (Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ страницы):