[regex] Replacing from match to end-of-line

This should be incredibly easy but I can't get it to work. I just want to use sed to replace from one string to the end of a line. For example if I have the following data file:

   one  two  three  five
   four two  five five six
   six  one  two seven four

and I want to replace from the word "two" through the end of the line with the word "BLAH" ending up with the output:

   one BLAH
   four BLAH
   six one BLAH

wouldn't that just be:

   sed -e 's/two,$/BLAH/g'

I'm not the best at regex to maybe that's the problem

This question is related to regex sed

The answer is


This should do what you want:

sed 's/two.*/BLAH/'

$ echo "   one  two  three  five
>    four two  five five six
>    six  one  two seven four" | sed 's/two.*/BLAH/'
   one  BLAH
   four BLAH
   six  one  BLAH

The $ is unnecessary because the .* will finish at the end of the line anyways, and the g at the end is unnecessary because your first match will be the first two to the end of the line.


Use this, two<anything any number of times><end of line>

's/two.*$/BLAH/g'

awk

awk '{gsub(/two.*/,"")}1' file

Ruby

ruby -ne 'print $_.gsub(/two.*/,"")' file