nl în Linux / Bash

Procesare și filtrare text POSIX / GNU coreutils

Numerotează rândurile unui fișier, cu control asupra formatului, lățimii și numărului de start.

Sintaxă comandă
nl [-b STIL] [-w LĂȚIME] [-s SEPARATOR] [-v START] [fișier]

Ce face nl

Comanda nl (number lines) afișează fișierul cu un număr în fața rândurilor. Spre deosebire de cat -n, implicit sare peste rândurile goale (stilul -b t): ele nu primesc număr.

Formatul implicit este numărul aliniat la dreapta pe 6 caractere, urmat de un tab. Poți schimba lățimea cu -w, separatorul cu -s, numărul de început cu -v și pasul cu -i.

Opțiuni și argumente

Opțiune / Parametru Descriere
-b a Numerotează toate rândurile, inclusiv cele goale (implicit este -b t, doar rândurile cu text).
-w N Lățimea câmpului pentru număr (implicit 6).
-s ȘIR Textul pus între număr și rând (implicit un tab).
-v N Primul număr folosit (implicit 1).
-i N Pasul dintre numere (implicit 1).

Exemple

Exemplul 1: Numerotarea unei liste

Formatul implicit: numărul aliniat la dreapta, urmat de tab.

printf 'Ana\nMihai\nIoana\n' > elevi.txt
nl elevi.txt

Rezultat

     1	Ana
     2	Mihai
     3	Ioana

Exemplul 2: Format de listă numerotată „1. …”

Cu lățime 2 și separatorul '. ' obținem o listă obișnuită.

printf 'Iași\nCluj\nTimișoara\n' | nl -w2 -s'. '

Rezultat

 1. Iași
 2. Cluj
 3. Timișoara

Exemplul 3: Numerotarea tuturor rândurilor, cu pas 10

-b a numerotează și rândul gol, iar -v 10 -i 10 dă numerele 10, 20, 30.

printf 'echo start\n\necho stop\n' | nl -b a -v 10 -i 10

Rezultat

    10	echo start
    20	
    30	echo stop

Greșeli frecvente

  • Așteptarea ca rândurile goale să fie numerotate: cu setările implicite nl le sare. Folosește nl -b a sau cat -n dacă vrei ca numerele să corespundă exact cu numerele rândurilor din editor.

Comenzi înrudite

  • cat: Afișează conținutul unuia sau mai multor fișiere și le concatenează în ieșirea standard.
  • head: Afișează primele linii (implicit primele 10) dintr-un fișier sau flux de date.
  • sed: Editor de flux (stream editor) pentru transformarea, înlocuirea și filtrarea automată a textului.