Issue
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 :
Solution
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/^[^=:]*[=:]//'
Answered By - Mad Physicist Answer Checked By - Marilyn (WPSolving Volunteer)