Printing the Top of a File

Many versions of BSD UNIX include a nice program called head that prints the top n (default: 10) lines of a file. System V or other users without head can emulate its behavior with sed.

The easiest way is simply to use sed's q command ():

% sed 10q file


head If you want to get fancy, you can use a shell script to emulate all of the behavior of the BSD head command, including taking an option for the number of lines to be printed, and printing a separator line if multiple filenames are specified on the same command line.

The tutorial has that script. Most of it is straightforward. One interesting part is shown below. It's the sed command that prints the separator when more than one file is shown:

sed " 1i\\ ==> $1 <== ${show}q" $1

The sed command i inserts the separator before line 1. The sed command q quits after the number of lines (by default, 10) in the $show shell variable (). The shell substitutes $1 with the filename being read. The double quotes (") around the sed commands let the shell build the commands on-the-fly before starting sed.

- JP, TOR