Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

nl – Числові рядки

Команда nl Програма - це досить загадковий інструмент, який використовується для виконання простого завдання. Він нумерує рядки. У своєму найпростішому використанні він нагадує кіт -н:


зображення

[me@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 рядок додавати рядок в кінець кожного номера рядка, щоб створити роздільник.

За замовчуванням – це один символ табуляції.


зображення

-v номер Встановити номер першого рядка кожної логічної сторінки номер. За замовчуванням один.


зображення

-w ширина Встановити ширину поля номера рядка на ширина. За замовчуванням 6.


зображення


Правда, ми, ймовірно, не будемо так часто нумерувати рядки, але можемо використовувати nl розглянути, як ми можемо об’єднати кілька інструментів для виконання більш складних завдань. Ми будемо спиратися на нашу роботу в попередньому розділі, щоб створити звіт про дистрибутиви Linux. Оскільки ми будемо використовувати nl, буде корисно включити його розмітку заголовка/тела/нижнього колонтитула. Для цього ми додамо його до sed сценарій з останнього розділу. Використовуючи наш текстовий редактор, ми змінимо сценарій наступним чином і збережемо його як distros-nl.sed:


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


1 я\

\\:\\:\\:\

\

Звіт про розповсюдження Linux\

\

Ім'я Вер. Звільнено\

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

\\:\\:

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

$ а\

\\:\

\

Кінець звіту

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


1 я\

\\:\\:\\:\

\

Звіт про розповсюдження Linux\

\

Ім'я Вер. Звільнено\

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

\\:\\:

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

$ а\

\\:\

\

Кінець звіту


Тепер сценарій вставляє файл nl логічну розмітку сторінки та додає нижній колонтитул у кінці звіту. Зауважте, що нам довелося подвоїти зворотні похилі риски в нашій розмітці, оскільки вони зазвичай інтерпретуються як escape-символ sed.

Далі ми створимо наш розширений звіт шляхом об’єднання сортувати, sed та nl:



зображення

[me@linuxbox ~]$ сортування -k 1,1 -k 2n distros.txt | sed -f distros-nl.s ed | нл


Звіт про розповсюдження Linux


ІМ'Я

Вер.

Випущений

----

----

--------


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), потім обробляємо результати sed, додавши заголовок звіту (включаючи логічну розмітку сторінки для nl) і нижній колонтитул. На завершення обробляємо результат с nl, який за замовчуванням нумерує лише рядки текстового потоку, які належать до основної частини логічної сторінки.

Ми можемо повторити команду та поекспериментувати з різними варіантами для nl. Деякі цікаві з них:



нл -н рз

нл -н рз


та



nl -w 3 -s ' '

nl -w 3 -s ' '


Найпопулярніші хмарні обчислення ОС на OnWorks: