Слишком много аргументов (.profile)

Чтобы получить то, что вы хотите, попробуйте это:

sed -r 's/^([^.]*)\.(.*)/\1\n\2/'

Тест:

$ echo "string.with.dots" | sed -r 's/^([^.]*)\.(.*)/\1\n\2/'
string
with.dots

sed будет соответствовать жадности, поэтому, пока вы используете sed 's/\(.*\)\.\(.*\)/\1\n\2/', он будет жадно сочетаются с последним . в качестве первой захваченной группы, а затем остальные после . как второй.

В моем sed выражении, чтобы sed перестать быть жадным, у меня есть для поиска некоторых альтернатив. Я с самого начала сопоставил с . в качестве первой группы ([^.]*), а затем независимо от первого совпадения как второго.

Теперь, если вы хотите, чтобы все части вокруг . были раздельными строки:

$ echo "string.with.dots" | sed -r 's/^([^.]*)\.([^.]*)\.(.*)/\1\n\2\n\3/'
string
with
dots
0
задан 26 January 2018 в 14:26

0 ответов

Другие вопросы по тегам:

Похожие вопросы: