Thursday, February 3, 2022

[SOLVED] using sed, remove everything before the first occurence of a character

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)