Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

nl - Число строк

Ассоциация nl Программа - довольно загадочный инструмент, используемый для выполнения простой задачи. Он нумерует строки. В простейшем использовании он напоминает кошка -n:


изображение

[я @ linuxbox ~] $ nl distros.txt | голова


1

SUSE

10.2

12/07/2006

2

Fedora

10

11/25/2008

3

SUSE

11.0

06/19/2008

4

Ubuntu

8.04

04/24/2008

5

Fedora

8

11/08/2007

6

SUSE

10.3

10/04/2007

7

Ubuntu

6.10

10/26/2006


8

Fedora

7

05/31/2007

9

Ubuntu

7.10

10/18/2007

10

Ubuntu

7.04

04/19/2007


Подобно кошка, nl может принимать либо несколько файлов в качестве аргументов командной строки, либо стандартный ввод. Тем не мение, nl имеет ряд опций и поддерживает примитивную форму разметки, позволяющую использовать более сложные виды нумерации.

nl поддерживает концепцию, называемую «логическими страницами» при нумерации. Это позволяет nl сбрасывать (начинать заново) числовую последовательность при нумерации. Используя опции, можно установить начальный номер на определенное значение и, в некоторой степени, его формат. Логическая страница подразделяется на верхний, основной и нижний колонтитулы. В каждом из этих разделов нумерация строк может быть сброшена и / или ей может быть назначен другой стиль. Если nl задано несколько файлов, он обрабатывает их как один поток текста. Разделы в текстовом потоке обозначаются наличием довольно странной разметки, добавленной к тексту:


Таблица 21-1: Разметка nl


Разметка Значение

Разметка Значение

\: \: \: Начало заголовка логической страницы


изображение

\: \: Начало тела логической страницы


изображение

\: Начало нижнего колонтитула логической страницы


изображение


Каждый из вышеперечисленных элементов разметки должен отображаться отдельно в отдельной строке. После обработки элемента разметки nl удаляет его из текстового потока.

Вот общие варианты nl:


Таблица 21-2: Общие параметры nl


Вариант Значение

Вариант Значение

-b стиль Установить нумерацию тела на стиль, Где стиль является одним из следующих:

a = пронумеровать все строки

t = количество только непустых строк. Это значение по умолчанию.

n = нет

pRegExp = количество только строк, соответствующих базовому регулярному выражению

регулярное выражение.


изображение

-f стиль Установить нумерацию нижнего колонтитула на стиль. По умолчанию n (нет).


изображение

-h стиль Установить нумерацию заголовков на стиль. По умолчанию n (нет).


изображение


изображение

-i номер Установите шаг нумерации страниц на номер. По умолчанию - один.


изображение

-n формат Устанавливает формат нумерации на формат, где формат:

ln = выровнено по левому краю, без ведущих нулей.

rn = выровненный по правому краю, без ведущих нулей. Это значение по умолчанию.

rz = по правому краю, с ведущими нулями.


изображение

-p Не сбрасывать нумерацию страниц в начале каждой логической страницы.


изображение

-s string Добавить string до конца каждого номера строки, чтобы создать разделитель.

По умолчанию - одиночный символ табуляции.


изображение

-v номер Установите номер первой строки каждой логической страницы на номер. По умолчанию - один.


изображение

-w ширина Установите ширину поля номера строки на ширина. По умолчанию 6.


изображение


По общему признанию, мы, вероятно, не будем так часто нумеровать строки, но мы можем использовать nl чтобы посмотреть, как мы можем объединить несколько инструментов для выполнения более сложных задач. Мы продолжим работу, проделанную в предыдущей главе, чтобы подготовить отчет о дистрибутивах Linux. Поскольку мы будем использовать nl, будет полезно включить его разметку верхнего / основного / нижнего колонтитула. Для этого добавим его в СЕПГ сценарий из предыдущей главы. Используя наш текстовый редактор, мы изменим сценарий следующим образом и сохраним его как дистрибутивы-nl.sed:


# sed скрипт для создания отчета о дистрибутивах Linux


1 я \

\\: \\: \\: \

\

Отчет о дистрибутивах Linux \

\

Имя Ver. Выпущенный\

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

\\: \\:

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

$ a \

\\: \

\

Конец отчета

# sed скрипт для создания отчета о дистрибутивах Linux


1 я \

\\: \\: \\: \

\

Отчет о дистрибутивах Linux \

\

Имя Ver. Выпущенный\

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

\\: \\:

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

$ a \

\\: \

\

Конец отчета


Скрипт теперь вставляет nl разметка логической страницы и добавление нижнего колонтитула в конце отчета. Обратите внимание, что нам пришлось удвоить обратную косую черту в нашей разметке, потому что они обычно интерпретируются как escape-символ с помощью СЕПГ.

Затем мы создадим наш расширенный отчет, объединив sort, СЕПГи nl:



изображение

[я @ linuxbox ~] $ sort -k 1,1 -k 2n distros.txt | sed -f distros-nl.s ed | нл


Отчет о дистрибутивах Linux


Имя

Ver.

Выпущенный

----

----

--------


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


Конец отчета


Наш отчет - это результат нашей цепочки команд. Сначала мы сортируем список по названию и версии дистрибутива (поля 1 и 2), затем обрабатываем результаты с помощью СЕПГ, добавляя заголовок отчета (включая разметку логической страницы для nl) и нижний колонтитул. Наконец, обрабатываем результат с помощью nl, который по умолчанию нумерует только те строки текстового потока, которые принадлежат основной части логической страницы.

Мы можем повторить команду и поэкспериментировать с разными вариантами nl. Вот несколько интересных:



нл -н рз

нл -н рз


и



nl -w 3 -s ''

nl -w 3 -s ''


Лучшие облачные вычисления для ОС в OnWorks: