sed: regexp extensions
5.6 regular expression extensions
=================================
The following sequences have special meaning inside regular expressions
(used in ⇒addresses Regexp Addresses. and the 's' command).
DONTPRINTYET These can be used in both ⇒basic BRE syntax. and *noteDONTPRINTYET These can be used in both ⇒basic BRE syntax. and ⇒
extended ERE syntax. regular expressions (that is, with or without the
'-E'/'-r' options).
'\w'
Matches any "word" character. A "word" character is any letter or
digit or the underscore character.
$ echo "abc %-= def." | sed 's/\w/X/g'
XXX %-= XXX.
'\W'
Matches any "non-word" character.
$ echo "abc %-= def." | sed 's/\W/X/g'
abcXXXXXdefX
'\b'
Matches a word boundary; that is it matches if the character to the
left is a "word" character and the character to the right is a
"non-word" character, or vice-versa.
$ echo "abc %-= def." | sed 's/\b/X/g'
XabcX %-= XdefX.
'\B'
Matches everywhere but on a word boundary; that is it matches if
the character to the left and the character to the right are either
both "word" characters or both "non-word" characters.
$ echo "abc %-= def." | sed 's/\B/X/g'
aXbXc X%X-X=X dXeXf.X
'\s'
Matches whitespace characters (spaces and tabs). Newlines embedded
in the pattern/hold spaces will also match:
$ echo "abc %-= def." | sed 's/\s/X/g'
abcX%-=Xdef.
'\S'
Matches non-whitespace characters.
$ echo "abc %-= def." | sed 's/\S/X/g'
XXX XXX XXXX
'\<'
Matches the beginning of a word.
$ echo "abc %-= def." | sed 's/\</X/g'
Xabc %-= Xdef.
'\>'
Matches the end of a word.
$ echo "abc %-= def." | sed 's/\>/X/g'
abcX %-= defX.
'\`'
Matches only at the start of pattern space. This is different from
'^' in multi-line mode.
Compare the following two examples:
$ printf "a\nb\nc\n" | sed 'N;N;s/^/X/gm'
Xa
Xb
Xc
$ printf "a\nb\nc\n" | sed 'N;N;s/\`/X/gm'
Xa
b
c
'\''
Matches only at the end of pattern space. This is different from
'$' in multi-line mode.