2017-02-08 11 views
1

Я просто интересно, почему это не работает:Как изменить первую часть слова через SED?

Оригинал

red wagon logon 
Blue wagon logon 
Black wagon logon 
red wagon logon 
red wagon logon 
red walking 43 logon 
red wagon logon 89 
Pink wagon logon 110 
red wagon logon 
red wagon logon 
green wagon logon 

эта команда работает хорошо: sed 's:wa\(gon\):poly\1:' wagon.txt

Результат

red polygon logon 
Blue polygon logon 
Black polygon logon 
red polygon logon 
red polygon logon 
red walking 43 logon 
red polygon logon 89 
Pink polygon logon 110 
red polygon logon 
red polygon logon 
green polygon logon 

теперь я хочу, например wapoly, но это распечатать polywa почему?

Команда: sed 's:\(wa\)gon:poly\1:' wagon.txt

red polywa logon 
Blue polywa logon 
Black polywa logon 
red polywa logon 
red polywa logon 
red walking 43 logon 
red polywa logon 89 
Pink polywa logon 110 
red polywa logon 
red polywa logon 
green polywa logon 

Благодаря

ответ

1

Изменить Захват группы из gon в wa и построить запасную часть в \1, содержащей wa с добавлением poly.

sed 's:\(wa\)gon:\1poly:' file 
red wapoly logon 
Blue wapoly logon 
Black wapoly logon 
red wapoly logon 
red wapoly logon 
red walking 43 logon 
red wapoly logon 89 
Pink wapoly logon 110 
red wapoly logon 
red wapoly logon 
green wapoly logon 

\1, \2 захватываются группы образуют в заместительном участии regex, например, в линии s:\(wa\)gon:\1poly: часть wa захватывается в \1, а затем может быть использована в сменной части, как \1poly, который выходы wapoly

Чтобы продемонстрировать использование \2, используя тот же пример, рассмотрите, s:\(wa\)g\(on\):\1poly\2:, теперь захваченную группу 1, представленную \1 имеет wa и захватил группу 2 \2 имеют on, теперь построенную строка \1poly\2 будет wapolyon,

sed 's:\(wa\)g\(on\):\1poly\2:' file 
red wapolyon logon 
Blue wapolyon logon 
Black wapolyon logon 
red wapolyon logon 
red wapolyon logon 
red walking 43 logon 
red wapolyon logon 89 
Pink wapolyon logon 110 
red wapolyon logon 
red wapolyon logon 
green wapolyon logon 
+0

@Freeman: это мое обновление предоставить больше информации? – Inian

+1

@Freeman: Приятно помочь! Ура! – Inian