Numbering Lines
Problem
You need to number the lines of a text file for reference or for use as an example.
Solution
Thanks to Michael Wang for contributing the following shell-only implementation and
reminding us about cat -n. Note that
our sample file named lines has a trailing blank
line:
$ i=0; while IFS= read -r line; do (( i++ )); echo "$i $line"; done < lines 1 Line 1 2 Line 2 3 4 Line 4 5 Line 5 6
Or a useful use of cat:
$ cat -n lines
1 Line 1
2 Line 2
3
4 Line 4
5 Line 5
6
$ cat -b lines
1 Line 1
2 Line 2
3 Line 4
4 Line 5Discussion
If you only need to display the line numbers on the screen, you
can use less -N:
$ /usr/bin/less -N filename
1 Line 1
2 Line 2
3
4 Line 4
5 Line 5
6
lines (END)Warning
Line numbers are broken in old versions of
less on some obsolete Red Hat systems. Check your
version with less -V. Version
358+iso254 (e.g., Red Hat 7.3 & 8.0) is known to be bad. Version
378+iso254 (e.g., RHEL3) and version 382 (RHEL4, Debian Sarge) are
known to be good; we did not test other versions. The problem is
subtle and may be related to an older iso256
patch. You can easily compare last line numbers as the
vi and Perl examples are correct.
You can also use vi (or
view, which is read-only vi)
with the :set nu! command:
$ vi filename
1 Line 1
2 Line 2
3
4 Line 4
5 Line 5
6
~
:set nu!vi has many options, so you can start vi by doing
things like vi +3 -c 'set nu!'
filename to turn on line numbering and place your cursor on line 3. If you’d like more control over how the numbers are ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access