Замена от соответствия до конца строки
Это должно быть невероятно легко, но я не могу заставить его работать. Я просто хочу использовать 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'
Я не лучший в регулярном выражении, возможно, что проблема
Ответы
Ответ 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