开发者

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 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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜