Chapters:
1: Introduction
2: Simple example
3: Invocation
4: Finer Control
5: X-Y Plots
6: Contour Plots
7: Image Plots
8: Examples
9: Gri Commands
10: Programming
11: Environment
12: Emacs Mode
13: History
14: Installation
15: Gri Bugs
16: Test Suite
17: Gri in Press
18: Acknowledgments

Indices:
Concepts
Commands
Variables

Case 1 -- known number of header lines. This is easy. If you know that the file has, say, 10 header lines, you can just do this:

  open file skip 10 read columns x y ... 

Case 2 -- header itself indicates number of header lines. Quite often the first line of a file will indicate the number of header lines. For example, suppose the first line contains a single number, indicating the number of header lines to follow:

  open file read .skip. skip .skip. read columns x y ... 

Case 3 -- header lines marked by a textual key. Sometimes header lines are indicated by a textual key, for example, the characters HEADER' at the start of the line in the file. The easy way to skip such a header is to use a system command. Depending on your familiarity with the operating system (here presumed to be Unix), you might choose to use Grep, Awk, or Perl. Here are examples:

  open "grep -v '^HEADER' file |" 

For more on the |' mechanism, see see Open. The Grep command prints lines which do not match the indicated string (because of the -v' switch), and the ^' character stands for the start of the line (see Grep). Thus all lines with the key word at the start of the line are skiped.

Case 4 -- reading and using information in header. Consider a dataset in which the first line gives the time of observation, followed by a list of observations. This might be, for example, an indication of the data taken from a weather balloon released at a particular time from a fixed location, with the main data being air temperature as a function of elevation of the balloon. The time indication might be, for instance, the hour number. One might need to know the time to print a label on the diagram. You could do that by:

  open file read .time. read columns x y draw curve sprintf \label "Time of observation is %f hour" .time. draw title "\label" 

where the sprintf' command has been used to change the numerical time indication into a synonym that can be inserted into a quoted string for drawing the title of the diagram (see Sprintf). Here the time has been assumed to be a decimal hour. You might also have three numbers on the line, perhaps a day, an hour and a minute. Then you could do something like

  open file read .d. .h. .m. read columns x y draw curve sprintf \label "Obs. %.0f:%.0f, day %.0f" .h. .m. .d. draw title "\label" 

Here the %.0f' code is used to ensure no numbers will be written after the decimal point. Naturally, you could convert this to a decimal day, by e.g.

  ... .dday. = {rpn .day. .hour. 24 / .min. 24 / 60 /} sprintf \label "Decimal day is %.4f" .dday. ... 

(Some of you might know how many minutes in a day, but I'm silly so I kept the extra mathematical step -- nothing is lost by being straightforward!)