You create a capture group in a sed
regex by wrapping a pattern in \(
and
\)
. Generally, this capture group is referenced in the substitution
expression with \1
.
The capture references (e.g. \1
) can also be used in the regex as part of
specifying the match.
For instance, we can do a capture of a single digit followed by a reference to that capture. That will match any line that has a pair of matching consecutive digits.
$ seq 111 | sed -n 's/\([[:digit:]]\)\1/&/p'
11
22
33
44
55
66
77
88
99
100
110
111
This also uses &
in the subex which represents the entire match. The -n
and
/p
combination suppresses printing of lines to only those that have
substitutions.