The name "grep"

Arthur Chance freebsd at
Mon Jul 7 10:08:44 UTC 2014

On 07/07/2014 09:44, Polytropon wrote:
> On Mon, 07 Jul 2014 08:42:47 +0100, Arthur Chance wrote:
>>   From ancient memory circa 1980, probably suffering from bit rot:
>> Before grep existed, to use ed to print lines in a file that match a
>> particular regular expression
>> ed $file
>> g/re/p
>> q
>> where the "re" stands for the regular expression and you're applying the
>> "p" (print) command to each line that matches it.
> Yes, I already thought this was related to ed (discussed in the
> same book at a previous occassion, and refered to as "the editor",
> prior to introducing vi). So "r" and "e" aren't acutual commands
> (p is a command, "print", g a modifier, "global"), but
> refers to "put regular expression here".
> Having another seizure that forced me to read "man ed", I found
> some "re" entries:
>       (.,.)s/re/replacement/
>       (.,.)s/re/replacement/g
>       (.,.)s/re/replacement/n
>       \(re\)
> The two important entries are:
>       (1,$)g/re/command-list
>               Apply command-list to each of the addressed lines matching a reg-
>               ular expression re.  The current address is set to the line cur-
>               rently matched before command-list is executed.  At the end of
>               the g command, the current address is set to the last line
>               affected by command-list
> and
>       (.,.)p  Print the addressed lines.  The current address is set to the
>               last line printed.
> There is the "re" of "g/re/p", leading to the understanding what
> "grep" basically means (even though it offers much more functionality
> as a stand-alone tool, of course).
>> When a newbie asked how to print matching lines in a file, you'd answer
>> "grep" and show them the trick, and eventually the name got given to the
>> grep program when it was written. I think the "global regular expression
>> print" explanation is based on explaining what the original ed command did.
> And I have actually _tried_ that with /bin/ed - it works! So
> should the "grep" manpage (and maybe other manpages, too)
> contain a hint on where the program name originates from?
> In my opinion, this would be a good place to put such kind
> of information because manpages are a "condensed form" of
> wisdom, available locally, for reference, study, and overall
> education. Global Real Education, Pal. ;-)

It's of historical interest, but 30+ years down the line,  when only 
sysadmins know ed for emergency use, I doubt whether it really matters 
that much. I suspect most Unix programmers today would respond in much 
the same way as my nephew (born about the same time as OSF/1) responded 
to my explanation of what "45s and 33s" were - part "hmm, interesting 
but seriously obscure fact" and part "jeez, was that like the Stone Age 
or something?" :-)

More information about the freebsd-questions mailing list