Understanding the `nl` Command in Linux
The nl
command in Linux is a utility for numbering lines of files. It allows
users to add line numbers to files in a customizable way. This is especially
useful when analyzing files where keeping track of line numbers is important,
such as scripts or code.
Syntax
The basic syntax of the nl
command is:
nl [OPTIONS]... [FILE]...
If no file is specified, or when the file is -
, nl
reads from standard
input.
Options
Here is a table of common options for nl
:
Option | Shorthand | Description |
---|---|---|
--body-numbering | -b | Specify line numbering for the body of the document. |
--header-numbering | -h | Specify line numbering for the header of the document. |
--footer-numbering | -f | Specify line numbering for the footer of the document. |
--line-increment | -i | The increment for line numbers (default is 1). |
--number-format | -n | The format for line numbers (ln, rn, rz). |
--number-separator | -s | The text to insert between the line number and the line. |
--number-width | -w | The number of columns for line numbers (default is 6). |
--join-blank-lines | -l | Number of consecutive blank lines to group as one. |
Examples
Before we start with the examples, let’s create a sample text file using vim
:
vim example.txt
Once inside vim
, enter the following lines (or your content of choice):
This is a sample text file.
It contains several lines,
some of them are empty.
The goal is to demonstrate the nl command.
To save and exit vim
, press Esc
, type :wq
, and hit Enter
.
Example 1: Basic Line Numbering
nl example.txt
This command will display the contents of example.txt
with line numbers added
to non-empty lines.
Example 2: Number All Lines
nl -ba example.txt
The -ba
option numbers all lines, including empty ones.
Example 3: Custom Line Increment
nl -i 10 example.txt
This command numbers every line but increments the line numbers by 10.
Example 4: Right-Aligned, Zero-Padded Line Numbers
nl -nrz -w3 -s". " example.txt
Here we use several options together:
-nrz
: Right-align and zero-pad line numbers.-w3
: Use a field width of 3 for line numbers.-s". "
: Insert ". " between the line number and text.
Example 5: Skip Numbering Certain Lines
nl -bp'^$' example.txt
With -bp'^$'
, we're telling nl
to number only lines that match the regular
expression ^$
, which represents empty lines. Hence, it will skip numbering
non-empty lines.
Combining nl
with Other Commands
The nl
command can also be piped with other commands for more complex
operations. For example, to number all lines and then redirect the output to
another file:
nl -ba example.txt > numbered.txt
Or, you might combine it with grep
to search for a pattern and number the
results:
grep 'sample' example.txt | nl
The nl
command is a simple yet powerful tool for line numbering. By using the
options detailed above, users can customize the numbering to suit a wide range
of needs, from simple line counting to complex formatting for code reviews or
document editing.
What Can You Do Next 🙏😊
If you liked the article, consider subscribing to Cloudaffle, my YouTube Channel, where I keep posting in-depth tutorials and all edutainment stuff for software developers.