Чтение онлайн

на главную - закладки

Жанры

Командная строка Linux
Шрифт:

Теперь выведем улучшенный отчет, объединив sort, sed и nl:

[me@linuxbox ~]$ 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 простой поток текста, можно увидеть, как она действует:

[me@linuxbox ~]$ 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 разбивать строки по последнему доступному пробелу перед достижением указанной ширины:

[me@linuxbox ~]$ 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:

[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | head

`fmt’ читает текст из файла, заданного

аргументами FILE (или со

стандартного ввода, если аргументы отсутствуют),

и выводит результат в стандартный вывод.

По умолчанию пустые строки, пробелы между

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

сохраняются в выводе; последующие строки с

разными отступами не объединяются; символы

табуляции на входе заменяются соответствующим.

Результат не особенно впечатляет. Может быть, стоит прочитать этот текст, так как он объясняет происходящее:

По умолчанию пустые строки, пробелы между словами и отступы сохраняются в выводе; последующие строки с разными отступами не объединяются; символы табуляции на входе заменяются соответствующим числом пробелов и выводятся в таком виде.

Итак, fmt сохраняет отступ в первой строке. К счастью, fmt имеет параметр, исправляющий это:

[me@linuxbox ~]$ fmt -cw 50 fmt-info.txt

`fmt' читает текст из файла, заданного

аргументами FILE (или со стандартного ввода,

Поделиться:
Популярные книги

Образ врага

Дашкова Полина Викторовна
Детективы:
триллеры
прочие детективы
8.32
рейтинг книги
Образ врага

Я все еще барон

Дрейк Сириус
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Я все еще барон

Темный двойник Корсакова. Оккультный детектив

Евдокимов Игорь
2. Тайный архив Корсакова
Детективы:
исторические детективы
крутой детектив
5.00
рейтинг книги
Темный двойник Корсакова. Оккультный детектив

Баоларг

Кораблев Родион
12. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Баоларг

Постмодернизм

Грицанов Александр Алексеевич
Научно-образовательная:
философия
6.25
рейтинг книги
Постмодернизм

Лекарь Империи 7

Карелин Сергей Витальевич
7. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
попаданцы
5.00
рейтинг книги
Лекарь Империи 7

Ранчо

Стил Даниэла
Любовные романы:
современные любовные романы
7.71
рейтинг книги
Ранчо

МИФОуказания

Асприн Роберт Линн
3. Мифология
Фантастика:
юмористическая фантастика
9.33
рейтинг книги
МИФОуказания

Инженер Петра Великого 3

Гросов Виктор
3. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 3

Я – Стрела. Трилогия

Суббота Светлана
Я - Стрела
Любовные романы:
любовно-фантастические романы
эро литература
6.82
рейтинг книги
Я – Стрела. Трилогия

Кодекс Охотника. Книга X

Винокуров Юрий
10. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
6.25
рейтинг книги
Кодекс Охотника. Книга X

На границе империй. Том 8. Часть 2

INDIGO
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2

Наномашины, наследник! Том 9

Новиков Николай Васильевич
9. Первый среди карапузов
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наномашины, наследник! Том 9

Технология XSLT

Валиков Алексей Н.
Компьютеры и Интернет:
программирование
5.00
рейтинг книги
Технология XSLT