2017-01-19 6 views
0

Я хочу, чтобы иметь возможность заменить все символы подчеркивания, а затем строчную букву на точку с sed. Является ли это возможным?Замена символа подчеркивания, сопровождаемого строчной буквой

замена

foo_bar

с

foo.bar

Приветствиях

+1

Я думаю, что 'sed 's/_ \ ([a-z] \) /. \ 1/g'' должен работать. –

+4

@ WiktorStribiżew или '[[: lower:]]', чтобы избежать проблем с локальностью. –

ответ

1

Вы можете использовать

echo 'foo_bar_BAR_space' | sed 's/_\([[:lower:]]\)/.\1/g' 

Посмотреть online demo

Детали:

  • _ - подчеркивают
  • \([[:lower:]]\) - захватив группу, соответствующую строчную букву и поместить его в 1-й группе
  • .\1 - замена: точку + в нижнем регистре письмо, отнесенное к группе 1
  • /g - соответствует нескольким вхождениям определенного шаблона.