The g
option (e.g. s/pattern/replacement/g
) for many tools that use regex-style pattern matching and the :g
command in ed
, ex
, vi
, and vim
have pretty similar usage and meaning: match the given regex "globally", i.e., don't stop after the first match.
I have a two-fold question about this:
- Which came first, the
:g
command or theg
pattern-matching flag, and in which tool? It looks like most tools (such assed
) that use theg
flag in their pattern-matching are really just directly or indirectly emulatinged
. For instance, in the post-Perl age, most tools that use regex allow theg
flag because Perl does, and Perl, it would appear, does it becauseed
->sed
->Perl
. So I wouldn't be surprised if the answer is "they were introduced simultaneously in the originaled
tool, and have no historical precedent beyond that." - Why is this called the
global
option (or command)? There's really nothing "global" about it; the:g
command takes a range of lines just like any othered
command, and theg
flag doesn't extend the range of the search in any way (it just allows multiple hits). I suppose I can't think of a better name, but the chosen one just seems odd to me, so I'm wondering if there's some reason for it I'm not seeing.
g
command is global in that it applies a (normally one-line-at-a-time) command to several lines.