2011-01-28 4 views

ответ

1

Если я правильно понял ваш вопрос, вы хотите строки, как test:growTest:ret стать growTest:ret.

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

sed -i 's/test:(.*$)/\1/' 

я означает редактирование на месте.

s/one/two/заменяет случаи один с два.

Таким образом, это заменяет «test: (. * $)» На «\ 1». Где \ 1 - содержимое первой группы, что соответствует регулярному выражению внутри фигурных скобок.

"test: (. * $)" Соответствует первому вступлению "test:", а затем помещает все остальное до конца строки в фигурные скобки. Содержимое фигурных скобок остается после команды sed.

1
  1. Sed использовать голодный матч. Таким образом, ^.*: будет соответствовать test:growTest: кроме test:.
  2. По умолчанию sed позволяет заменить только первый сопоставленный шаблон. Поэтому вам не нужно ничего делать специально.
5

Изменить ваше регулярное выражение ^.*: в ^[^:]*:

Все, что вам нужно, что .* конструкция не будет потреблять ваш разделитель - двоеточие. Для этого замените match-any-char . с отрицательными скобками: [^abc], которые соответствуют любому знаку , за исключением.

Кроме того, не путайте два обводки ^, так как они имеют разные значения: первый соответствует началу строки, второй - отрицательным скобкам.

Смежные вопросы