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