Yes, sed
(stream editor) accepts regular expressions. It's one of the primary features of sed
that makes it such a powerful tool for text processing. With sed
, you can perform substitutions, deletions, and other operations based on regular expression patterns.
Here's a basic example of using sed
with a regular expression:
echo "Hello, world!" | sed 's/world/universe/'
This command replaces the word "world" with "universe". The output will be:
Hello, universe!
A few things to note about sed
and its regular expressions:
-
BRE vs. ERE: By default,
sed
uses Basic Regular Expressions (BRE). If you want to use Extended Regular Expressions (ERE), which offer a more modern syntax, you can use the-E
option withsed
(in some versions ofsed
). -
Special Characters: In BRE, some characters that you might expect to be special (like
+
,?
, and|
) are treated as literals. To give them their special meaning, you often need to escape them with a backslash (\
). This is different in ERE, where these characters are special by default. -
Grouping: In BRE, you use
\(
and\)
for grouping, while in ERE, you use(
and)
.
For example, to match one or more digits using BRE:
echo "12345" | sed 's/\([0-9]\+\)/Number: &/'
Using ERE (with the -E
option):
echo "12345" | sed -E 's/([0-9]+)/Number: &/'
Both of the above commands will output:
Number: 12345
In these examples, &
in the replacement part refers to the entire matched portion of the pattern space.
Remember, the exact behavior and available features might vary slightly depending on the version and implementation of sed
you're using. Always refer to the man page (man sed
) or other documentation specific to your version for detailed information.