Commande Linux nl : Numérotation des lignes

LinuxBeginner
Pratiquer maintenant

Introduction

Ce tutoriel explore la commande nl sous Linux, utilisée pour numéroter les lignes dans les fichiers texte. Nous apprendrons à utiliser cette commande dans divers scénarios, facilitant ainsi le référencement de lignes spécifiques dans vos documents. Cette compétence est particulièrement utile pour les programmeurs, les administrateurs système et toute personne travaillant régulièrement avec des fichiers texte.

Imaginez que vous êtes un développeur logiciel junior travaillant sur votre premier grand projet. Votre chef d'équipe vous a demandé de réviser un fichier de configuration et de discuter de sections spécifiques. L'utilisation de la commande nl vous aidera à référencer et à discuter facilement de lignes particulières dans le fichier, rendant votre collaboration plus efficace.

Comprendre la commande nl de base

Commençons par examiner un exemple de fichier de configuration à l'aide de la commande nl.

  1. Tout d'abord, naviguons vers le répertoire du projet. Tapez la commande suivante et appuyez sur Entrée :
cd /home/labex/project

Cette commande change votre répertoire actuel pour /home/labex/project, où se trouvent nos fichiers d'exemple.

  1. Maintenant, utilisons la commande nl pour afficher le contenu de config.txt avec les numéros de ligne. Tapez :
nl config.txt

Vous devriez voir une sortie similaire à celle-ci :

     1  ## Server Configuration
     2  port=8080
     3  max_connections=100
     4
     5  ## Database Settings
     6  db_host=localhost
     7  db_port=5432
     8  db_name=myapp
     ...

Analysons ce qui se passe ici :

  • La commande nl a ajouté des numéros de ligne à gauche de chaque ligne du fichier.
  • Notez que les numéros sont alignés à droite dans une colonne de 6 caractères de large.
  • La ligne vide (ligne 4 dans le fichier original) n'est pas numérotée par défaut.

Cette numérotation permet de se référer facilement à des lignes spécifiques lors de discussions sur le fichier avec vos collègues. Par exemple, vous pourriez dire : "Regardons la ligne 2 pour vérifier le numéro de port."

Si vous ne voyez pas cette sortie ou si vous rencontrez une erreur, assurez-vous d'être dans le bon répertoire (/home/labex/project) et que le fichier config.txt existe bien. Vous pouvez vérifier cela en utilisant la commande ls pour lister les fichiers du répertoire actuel.

Numéroter toutes les lignes, y compris les lignes vides

Parfois, vous souhaiterez peut-être numéroter toutes les lignes, y compris les lignes vides. Cela peut être utile lorsque vous devez référencer des lignes vides ou lorsque vous travaillez avec des fichiers où les lignes vides ont une importance structurelle. Utilisons l'option -b a pour y parvenir.

Exécutez la commande suivante :

nl -b a config.txt

Vous devriez maintenant voir une sortie comme celle-ci :

     1  ## Server Configuration
     2  port=8080
     3  max_connections=100
     4
     5  ## Database Settings
     6  db_host=localhost
     7  db_port=5432
     8  db_name=myapp
     ...

Comprenons ce qui se passe :

  • L'option -b contrôle la numérotation des lignes pour le corps du fichier.
  • L'argument a signifie "all" (tout) et indique à nl de numéroter toutes les lignes, y compris les vides.
  • Notez que la ligne 4, qui était vide et non numérotée auparavant, possède désormais un numéro.

Cela peut être particulièrement utile lorsque vous devez mentionner des lignes vides dans vos échanges ou lors de la manipulation de fichiers où les sauts de ligne sont significatifs (comme dans certains langages de programmation ou fichiers de configuration spécifiques).

Si la ligne vide n'est pas numérotée, vérifiez bien que vous avez inclus l'option -b a dans votre commande.

Personnaliser le format des numéros

La commande nl vous permet de personnaliser l'affichage des numéros de ligne. Cela peut être utile pour améliorer la lisibilité ou pour préparer la sortie en vue d'un traitement ultérieur. Essayons d'aligner les numéros à droite et d'ajouter des zéros non significatifs (zéros de tête).

Utilisez l'option -n rz :

nl -n rz config.txt

Votre sortie devrait ressembler à ceci :

000001  ## Server Configuration
000002  port=8080
000003  max_connections=100

000004  ## Database Settings
000005  db_host=localhost
000006  db_port=5432
000007  db_name=myapp

000008  ### Logging Configuration
000009  log_level=info
000010  log_file=/var/log/myapp.log

000011  ## Security Settings
000012  enable_ssl=true
000013  ssl_cert_path=/etc/ssl/certs/myapp.crt

000014  ### Performance Tuning
000015  cache_size=1024
000016  thread_pool=20

000017  ## Miscellaneous
000018  debug_mode=false

Analysons l'option -n rz :

  • -n est utilisé pour spécifier le format de numérotation.
  • r signifie aligné à droite (ce qui est le réglage par défaut).
  • z signifie l'ajout de zéros de tête.

Ce format est particulièrement pratique lorsque vous devez trier ou traiter la sortie avec d'autres commandes, car le format à largeur fixe garantit un alignement constant.

Si votre sortie ne correspond pas à cela, assurez-vous d'avoir tapé la commande correctement, en incluant l'option -n rz.

Numéroter des types de lignes spécifiques

La commande nl permet de ne numéroter que certains types de lignes. Cela peut être extrêmement utile lors de la manipulation de fichiers complexes où vous souhaitez vous concentrer sur des lignes précises. Numérotons uniquement les lignes non vides qui ne commencent pas par le caractère '#' (souvent utilisé pour les commentaires dans les fichiers de configuration).

Utilisez la commande suivante :

nl -b p'^[^#]' config.txt

Vous devriez voir une sortie comme celle-ci :

       ## Server Configuration
     1  port=8080
     2  max_connections=100

       ## Database Settings
     3  db_host=localhost
     4  db_port=5432
     5  db_name=myapp

       ### Logging Configuration
     6  log_level=info
     7  log_file=/var/log/myapp.log

       ## Security Settings
     8  enable_ssl=true
     9  ssl_cert_path=/etc/ssl/certs/myapp.crt

       ### Performance Tuning
    10  cache_size=1024
    11  thread_pool=20

       ## Miscellaneous
    12  debug_mode=false

Analysons cette commande complexe :

  • -b p indique à nl de ne numéroter que les lignes correspondant à un motif (pattern) spécifique.
  • '^[^#]' est une expression régulière :
    • ^ signifie "début de ligne".
    • [^#] signifie "n'importe quel caractère qui n'est pas #".
    • Ainsi, l'ensemble correspond à toute ligne qui ne commence pas par #.

Cette commande est utile pour se concentrer sur les lignes de configuration actives tout en ignorant les commentaires. C'est particulièrement salvateur dans les gros fichiers de configuration pour identifier et référencer rapidement les paramètres réels.

Si vous n'obtenez pas le résultat escompté, vérifiez que vous avez saisi la commande exactement comme indiqué, y compris les guillemets simples autour du motif.

Combiner les options pour une numérotation complexe

Maintenant que nous avons exploré plusieurs options de la commande nl, combinons-les pour créer un schéma de numérotation plus élaboré. Nous allons numéroter toutes les lignes, utiliser un format personnalisé et ajuster la largeur du champ.

Exécutez la commande suivante :

nl -b a -n rz -s ': ' -w 3 config.txt

Cette commande effectue les actions suivantes :

  • -b a : Numérote toutes les lignes, y compris les vides.
  • -n rz : Aligne les numéros à droite avec des zéros de tête.
  • -s ': ' : Utilise ': ' comme séparateur entre le numéro et le contenu de la ligne.
  • -w 3 : Définit la largeur du champ de numérotation à 3 caractères.

Vous devriez voir une sortie similaire à celle-ci :

001: ## Server Configuration
002: port=8080
003: max_connections=100
004:
005: ## Database Settings
006: db_host=localhost
007: db_port=5432
008: db_name=myapp
009:
010: ### Logging Configuration
011: log_level=info
012: log_file=/var/log/myapp.log
013:
014: ## Security Settings
015: enable_ssl=true
016: ssl_cert_path=/etc/ssl/certs/myapp.crt
017:
018: ### Performance Tuning
019: cache_size=1024
020: thread_pool=20
021:
022: ## Miscellaneous
023: debug_mode=false

Récapitulons ce qui se passe :

  1. Toutes les lignes sont numérotées, y compris les lignes vides.
  2. Les numéros sont alignés à droite avec des zéros de tête.
  3. Le séparateur entre le numéro et le contenu est ': '.
  4. La largeur de la colonne des numéros est fixée à 3 caractères.

Ce schéma de numérotation complexe peut être très utile lors du travail sur des fichiers de configuration structurés ou des documents comportant des sections distinctes. Il permet de référencer facilement les lignes au sein de chaque section.

Si votre sortie ne correspond pas exactement, relisez attentivement la commande saisie, en faisant particulièrement attention aux espaces et aux caractères spéciaux.

Résumé

Dans ce tutoriel, nous avons exploré la commande nl et ses diverses options pour numéroter les lignes dans les fichiers texte. Nous avons appris à :

  1. Utiliser la commande nl de base pour ajouter des numéros de ligne à un fichier.
  2. Numéroter toutes les lignes, y compris les vides, avec l'option -b a.
  3. Personnaliser le format des numéros avec l'option -n rz.
  4. Numéroter des types de lignes spécifiques grâce au filtrage par motif.
  5. Combiner plusieurs options pour des schémas de numérotation complexes.

Ces compétences vous aideront à naviguer et à référencer des lignes dans des fichiers de configuration, du code source ou tout autre fichier texte que vous manipulerez dans vos projets de développement.

D'autres options de la commande nl non abordées dans ce tutoriel incluent :

  • -v NUM : Commencer la numérotation à NUM au lieu de 1.
  • -i NUM : Incrémenter les numéros de NUM au lieu de 1.
  • -l NUM : Grouper NUM lignes ensemble et ne numéroter que la première ligne de chaque groupe.
  • -f a : Numéroter toutes les lignes d'en-tête (lignes avant le premier corps de texte).

Ces options offrent encore plus de flexibilité lors de l'utilisation de la commande nl.