Shell Script To Number Lines Of Files
Q. How do I number each line of a text file? How do I write a shell script to display text file with line numbers added?
A. You don't have to write a shell script to add numbers to text file or code sample. You can use nl command which write each FILE to screen with line numbers added.
nl command example
Type the command as follows:
$ nl /etc/passwd
Sample output:
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
3 bin:x:2:2:bin:/bin:/bin/sh
4 sys:x:3:3:sys:/dev:/bin/sh
5 sync:x:4:65534:sync:/bin:/bin/sync
6 games:x:5:60:games:/usr/games:/bin/sh
7 man:x:6:12:man:/var/cache/man:/bin/sh
8 lp:x:7:7:lp:/var/spool/lpd:/bin/sh
9 mail:x:8:8:mail:/var/mail:/bin/sh
10 news:x:9:9:news:/var/spool/news:/bin/sh
......
...
40 quagga:x:119:126:Quagga routing suite,,,:/var/run/quagga/:/bin/false
41 oracle:x:1004:1004::/usr/lib/oracle/xe:/bin/bash
42 telnetd:x:112:120::/nonexistent:/bin/false
nl command has few more options:
$ nl --help
Output:
Usage: nl [OPTION]... [FILE]...
Write each FILE to standard output, with line numbers added.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-b, --body-numbering=STYLE use STYLE for numbering body lines
-d, --section-delimiter=CC use CC for separating logical pages
-f, --footer-numbering=STYLE use STYLE for numbering footer lines
-h, --header-numbering=STYLE use STYLE for numbering header lines
-i, --page-increment=NUMBER line number increment at each line
-l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as one
-n, --number-format=FORMAT insert line numbers according to FORMAT
-p, --no-renumber do not reset line numbers at logical pages
-s, --number-separator=STRING add STRING after (possible) line number
-v, --first-page=NUMBER first line number on each logical page
-w, --number-width=NUMBER use NUMBER columns for line numbers
--help display this help and exit
--version output version information and exit
By default, selects -v1 -i1 -l1 -sTAB -w6 -nrn -hn -bt -fn. CC are
two delimiter characters for separating logical pages, a missing
second character implies :. Type \\ for \. STYLE is one of:
a number all lines
t number only nonempty lines
n number no lines
pBRE number only lines that contain a match for the basic regular
expression, BRE
FORMAT is one of:
ln left justified, no leading zeros
rn right justified, no leading zeros
rz right justified, leading zeros
Subscribe to our free e-mail newsletter or RSS feed to get all updates.
You can Email this page to a friend.
Related Linux / UNIX FAQ:
- Howto: Linux command line utilities for removing blank lines from text files
- Linux / UNIX Display Lines Common in Two Files
- Howto use grep command in Linux / UNIX
- UNIX / Linux: vi / vim perform search and replace operation
- Delete text or paragraph between two sections using sed
Discussion on This FAQ
Leave a Reply
We encourage your comments, and suggestions. But please stay on topic, be polite, and avoid spam. Please do not use the comment form to ask for help / question. Ask your question on the excellent Linux tech support forum. Thank you very much for stopping by our site!
Tags: blank lines, delimiter, header lines, line numbers, nl command, number group, number lines of files, option file, page increment, shell script ~ Last updated on: April 18, 2008



April 18th, 2008 (4 weeks ago) at 11:06 am
You can do that with cat also.
cat -n
April 18th, 2008 (4 weeks ago) at 12:30 pm
I used cat -n till now. Not so much features but enough for using it in some scripts.
April 18th, 2008 (4 weeks ago) at 1:01 pm
Tobi / Halttula: thanks for pointing out cat -n switch.
May 1st, 2008 (2 weeks ago) at 7:22 am
“pr” can do it too