nl(1) — Commands
NAME
nl − Numbers lines in a file
SYNOPSIS
nl [−b type] [−d delimiter1[delimiter2]] [−f type] [−h type]
[−i number] [−l number] [−n format] [−p] [−s [separator]]
[−vnumber] [−wnumber] [file]
The nl command reads file (standard input by default), numbers the lines in the input, and writes the numbered lines to standard output.
FLAGS
Use the following flags to change the default settings.
-b typeSpecifies which body section lines to number. The recognized types are as follows:
aNumbers all lines.
tNumber only lines with text consisting of at least one character in the current locale’s graph character classification.
nDoes not number any lines.
p pattern
Numbers only those lines containing the specified pattern. The full range of regular expressions is supported for pattern.
-d delimiter1delimiter2
Uses delimiter1 and delimiter2 as the delimiters for the start of a logical page section. The default characters are \: (backslash followed by a colon). You can specify either one or two characters after the -d flag. If you want to use a backslash as a delimiter, enter two backslashes (\\).
-f typeSpecifies which logical page footer lines to number. The types recognized are the same as in -b type.
-h typeSpecifies which logical page header lines to number. The types recognized are the same as in -b type.
-i number
Increments logical page line numbers by number.
-l number
Counts number blank lines as 1. You must use "-ba", "-fa", and/or "-ha" with this option for it to be effective. For example, -l3 will only number the third adjacent blank.
-n format
Specifies format as the line numbering format. Recognized formats are as follows:
lnLeft justified, leading zeroes are suppressed.
rnRight justified, leading zeroes are suppressed (default).
rzRight justified, leading zeroes are kept.
-pIgnores logical page delimiters (does not restart numbering).
-s [separator]
Separates text from line numbers with the separator string. The default value of separator is a tab character. If you enter -s without an argument, there is no separation between the line number and its text.
-v number
Sets the initial logical page line number to number.
-w number
Specifies number as the number of digits in the line number. The default value of number is 6.
DESCRIPTION
In the output, nl numbers the lines on the left, according to the flags you specify on the command line.
The input text must be written in logical pages. Each logical page has a header, a body, and a footer section (sections can be empty). Unless you use the -p flag, nl resets the line numbers at the start of each logical page. You can set line numbering flags independently for the header, body, and footer sections (for example, no numbering of header and footer lines while numbering text lines only in the body).
Signal the start of logical page sections with lines in file that contain nothing but the following delimiter characters (assuming the default delimiters − see the description of the -d flag):
Line ContentsStart of
\:\:\:Header
\:\:Body
\:Footer
You can name only one file on the command line. You can list the flags and the filename in any order.
EXAMPLES
1.To number only the nonblank lines, enter:
nl chap1
This displays a numbered listing of chap1, numbering only the nonblank lines in the body sections. If chap1 contains no \:\:\ :, \:\ :, or \: delimiters, then the entire file is considered the body.
2.To number all lines, enter:
nl -ba chap1
This numbers all the lines in the body sections, including blank lines. This form of the nl command is adequate for most uses.
3.To specify a different line number format, enter:
nl -i10 -nrz -s:: -v10 -w4 chap1
This numbers the lines of chap1, starting with 10 (-v10) and counting by 10s (-i10). It displays four digits for each number (-w4), including leading zeroes (-nrz). The line numbers are separated from the text by two colons (-s::).
For example, if chap1 contains the following text:
A not-so-important note to remember:
You can’t kill time without injuring eternity.
then the numbered listing is as follows:
0010::A not-so-important note to remember:
0020::You can’t kill time without injuring eternity.
Note that the blank line was not numbered. To do this, use the -ba flag as shown in Example 2.