Let's say I have a line looking like this
Hello my first name is =Bart and my second is =Homer
How can I do if I want to get everything after the first =
or :
using sed
?
In this example, I would like to get the result
Bart and my second is =Homer
I am using sed 's/.*[=:]//'
right now but I get Homer
as result (everything after the last =
or :
) and I would like to get everything after the first, and not the last =
or :
env | sed '/^#/ d' | sed '/^$/ d' Concatenate FILE(s), or standard input, to standard output. With no FILE, or when FILE is -, read standard input.
\b marks a word boundary, either beginning or end. Now consider \b' . This matches a word boundary followed by a ' . Since ' is not a word character, this means that the end of word must precede the ' to match. To use \b to match at beginnings of words, reverse the order: '\b .
Normally, quantifiers in sed
are greedy, which is why you will always match the last =
. What defines the first =
is that all the characters before it are not =
, so:
sed 's/^[^=]*=//'
Your question implies that either :
or =
are valid markers, in which case
sed 's/^[^=:]*[=:]//'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With