Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

nl – Lignes numériques

Le nl est un outil plutôt obscur utilisé pour effectuer une tâche simple. Il numérote les lignes. Dans son utilisation la plus simple, il ressemble chat -n:


image

[moi@linuxbox ~]$ nl distributions.txt | diriger


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


Comme cat, nl peut accepter soit plusieurs fichiers comme arguments de ligne de commande, soit une entrée standard. Cependant, nl a un certain nombre d'options et prend en charge une forme primitive de balisage pour permettre des types de numérotation plus complexes.

nl prend en charge un concept appelé "pages logiques" lors de la numérotation. Cela permet à nl de réinitialiser (de recommencer) la séquence numérique lors de la numérotation. À l'aide d'options, il est possible de définir le numéro de départ sur une valeur spécifique et, dans une mesure limitée, son format. Une page logique est ensuite décomposée en un en-tête, un corps et un pied de page. Dans chacune de ces sections, la numérotation des lignes peut être réinitialisée et/ou se voir attribuer un style différent. Si nl reçoit plusieurs fichiers, il les traite comme un seul flux de texte. Les sections du flux de texte sont indiquées par la présence d'un balisage plutôt étrange ajouté au texte :


Tableau 21-1 : balisage nl


Signification du balisage

Signification du balisage

\:\:\ : Début de l'en-tête de page logique


image

\:\ : Début du corps de page logique


image

\ : Début du pied de page logique


image


Chacun des éléments de balisage ci-dessus doit apparaître seul sur sa propre ligne. Après avoir traité un élément de balisage, nl le supprime du flux de texte.

Voici les options courantes pour nl:


Tableau 21-2 : Options communes nl


Option Signification

Option Signification

-b Catégorie Définir la numérotation du corps sur Catégorie, Où Catégorie est l'un des suivants :

a = numéroter toutes les lignes

t = numéroter uniquement les lignes non vides. C'est la valeur par défaut.

n = aucun

pregexp = nombre uniquement de lignes correspondant à l'expression régulière de base

expression rationnelle.


image

-f Catégorie Définir la numérotation du pied de page sur Catégorie. La valeur par défaut est n (aucun).


image

-h Catégorie Définir la numérotation des en-têtes sur Catégorie. La valeur par défaut est n (aucun).


image


image

-i nombre Définir l'incrément de numérotation des pages sur nombre. La valeur par défaut est un.


image

-n le format Définit le format de numérotation sur le format, où format est :

ln = cadré à gauche, sans zéros non significatifs.

rn = justifié à droite, sans zéros non significatifs. C'est la valeur par défaut.

rz = justifié à droite, avec des zéros non significatifs.


image

-p Ne réinitialise pas la numérotation des pages au début de chaque page logique.


image

-s un magnifique Ajouter un magnifique à la fin de chaque numéro de ligne pour créer un séparateur.

La valeur par défaut est un caractère de tabulation unique.


image

-v nombre Définissez le numéro de la première ligne de chaque page logique sur nombre. La valeur par défaut est un.


image

-w largeur Définir la largeur du champ de numéro de ligne sur largeur. La valeur par défaut est 6.


image


Certes, nous ne numéroterons probablement pas les lignes aussi souvent, mais nous pouvons utiliser nl pour voir comment nous pouvons combiner plusieurs outils pour effectuer des tâches plus complexes. Nous nous appuierons sur nos travaux du chapitre précédent pour produire un rapport sur les distributions Linux. Puisque nous utiliserons nl, il sera utile d'inclure son balisage d'en-tête/corps/pied de page. Pour ce faire, nous l'ajouterons au sed script du dernier chapitre. À l'aide de notre éditeur de texte, nous allons modifier le script comme suit et l'enregistrer sous distributions-nl.sed:


# script sed pour produire un rapport sur les distributions Linux


1 je\

\\:\\:\\:\

\

Rapport sur les distributions Linux\

\

Nom Ver. Publié\

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

\\:\\ :

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

$ un\

\\:\

\

Fin du rapport

# script sed pour produire un rapport sur les distributions Linux


1 je\

\\:\\:\\:\

\

Rapport sur les distributions Linux\

\

Nom Ver. Publié\

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

\\:\\ :

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

$ un\

\\:\

\

Fin du rapport


Le script insère maintenant le nl balisage de page logique et ajoute un pied de page à la fin du rapport. Notez que nous avons dû doubler les barres obliques inverses dans notre balisage, car elles sont normalement interprétées comme un caractère d'échappement par sed.

Ensuite, nous produirons notre rapport amélioré en combinant sort, sedet une nl:



image

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


Rapport sur les distributions Linux


Nom

Regarder.

Libéré

----

----

--------


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


Fin du rapport


Notre rapport est le résultat de notre pipeline de commandes. Tout d'abord, nous trions la liste par nom de distribution et version (champs 1 et 2), puis nous traitons les résultats avec sed, en ajoutant l'en-tête du rapport (y compris le balisage de page logique pour nl) et pied de page. Enfin, nous traitons le résultat avec nl, qui, par défaut, ne numérote que les lignes du flux de texte qui appartiennent à la section corps de la page logique.

Nous pouvons répéter la commande et expérimenter différentes options pour nl. Certains sont intéressants :



nl -n rz

nl -n rz


et les



nl -w 3 -s ' '

nl -w 3 -s ' '


Meilleur système d'exploitation Cloud Computing chez OnWorks :