Thursday, July 04, 2019

Re: ed(1) man page doesn't mention use of single / and ?

Do I understand correctly that this is in reference to these parts of man 1 ed:

> /re/
> The next line containing the regular expression re. The search wraps to the beginning of the buffer and continues down to the current line, if necessary. "//" repeats the last search.

> ?re?
> The previous line containing the regular expression re. The search wraps to the end of the buffer and continues up to the current line, if necessary. "??" repeats the last search.

and:

> (1,$)g/re/command-list
> Applies command-list to each of the addressed lines matching a regular expression re. The current address is set to the line currently 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. If no lines were matched, the current line number remains unchanged.
>
> Each command in command-list must be on a separate line, and every line except for the last must be terminated by a backslash ('\'). Any commands are allowed, except for g, G, v, and V. A newline alone in command-list is equivalent to a p command.


If yes, then the corresponding parts of ed.1 are:

.It / Ns Ar re Ns /
The next line containing the regular expression
.Ar re .
The search wraps to the beginning of the buffer and continues down to the
current line, if necessary.
.Qq //
repeats the last search.
.It Pf ? Ar re ?
The previous line containing the regular expression
.Ar re .
The search wraps to the end of the buffer and continues up to the
current line, if necessary.
.Qq ??
repeats the last search.

and:

.It Xo
.Pf (1,$) Ic g No /
.Ar re No / Ar command-list
.Xc
.Sm on
Applies
.Ar command-list
to each of the addressed lines matching a regular expression
.Ar re .
The current address is set to the line currently matched before
command-list is executed.
At the end of the
.Ic g
command, the current address is set to the last line affected by command-list.
If no lines were matched,
the current line number remains unchanged.
.Pp
Each command in
.Ar command-list
must be on a separate line,
and every line except for the last must be terminated by a backslash
.Pq Sq \e .
Any commands are allowed, except for
.Ic g ,
.Ic G ,
.Ic v ,
and
.Ic V .
A newline alone in command-list is equivalent to a
.Ic p
command.
.Sm off

I'm not actually sure how to rewrite that. Would this call for
separate /re, ?re and (1,$)g/re entries, or would it suffice to say
that the second question mark or slash can be omitted if immediately
followed by a newline?

Does anyone else have any ideas?

NB: In case people haven't seen it, here's an excellent ed(1)
tutorial: https://sanctum.geek.nz/arabesque/actually-using-ed/
I just thought I'd mention that.

Ian

On 03/07/2019, mazocomp@disroot.org <mazocomp@disroot.org> wrote:
> Hi!
>
> I am not good at explaining something shortly and clearly to fit into
> proper documentation, so I'll just describe my experience here.
>
> Terminating regular expressions with / or ? is necessary only if they
> are followed by commands, otherwise the following are legal in both
> OpenBSD ed, Plan 9 ed and GNU ed:
> /something
> /
> ?
> g/ing
>
> I hope I made life of many ed users easier :)
>
>

No comments:

Post a Comment