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
19: License
Indices:
Concepts
Commands
Variables

### 8.12.1: Handling headers

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!)