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.
- 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.
- Maintenant, utilisons la commande
nlpour afficher le contenu deconfig.txtavec 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
nla 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
-bcontrôle la numérotation des lignes pour le corps du fichier. - L'argument
asignifie "all" (tout) et indique ànlde 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 :
-nest utilisé pour spécifier le format de numérotation.rsignifie aligné à droite (ce qui est le réglage par défaut).zsignifie 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 pindique ànlde 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 :
- Toutes les lignes sont numérotées, y compris les lignes vides.
- Les numéros sont alignés à droite avec des zéros de tête.
- Le séparateur entre le numéro et le contenu est ': '.
- 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 à :
- Utiliser la commande
nlde base pour ajouter des numéros de ligne à un fichier. - Numéroter toutes les lignes, y compris les vides, avec l'option
-b a. - Personnaliser le format des numéros avec l'option
-n rz. - Numéroter des types de lignes spécifiques grâce au filtrage par motif.
- 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.



