Подтвердить что ты не робот

Замена от соответствия до конца строки

Это должно быть невероятно легко, но я не могу заставить его работать. Я просто хочу использовать sed для замены из одной строки в конец строки. Например, если у меня есть следующий файл данных:

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

и я хочу заменить слово "два" на конец строки словом "BLAH", заканчивая выходом:

   one BLAH
   four BLAH
   six one BLAH

не так просто:

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

Я не лучший в регулярном выражении, возможно, что проблема

4b9b3361

Ответ 1

Это должно делать то, что вы хотите:

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

$ не требуется, так как .* будет заканчиваться в конце строки в любом случае, а g в конце не нужно, потому что ваше первое совпадение будет первым two до конца линия.

Ответ 2

Используйте это, два <anything any number of times><end of line>

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

Ответ 3

AWK

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

Рубин

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