2014-09-17 3 views
0

Я хочу избавиться от текстов, таких как «uc010obu.2:» в каждой строке. Я попытался написать следующее, но шаблон не узнаваем.Regex in Shell script

%s/uc(\d\+)(\w\+).(\d\+):// 

Может ли кто-нибудь помочь с правильным рисунком? благодаря

каждая строка что-то вроде этого:

CPEB2 uc010obu.2:c.1070_1071insCGG:p.G357delinsGG 

пс: Я пытаюсь сделать в VIM редакторе.

+1

Вы можете также дать нам текст, который вы пытаетесь выполнить регулярное выражение? это дает нам что-то, на что можно ссылаться и тестировать. – Mic1780

+0

Используется ли это как аргумент 'sed'? 'Vim'? Что-то другое? Почему вы группируете эти матчи, если вы все это выбрасываете? –

+0

Является ли текст, который вы удаляете, всегда две буквы, за которыми следуют три числа три буквы в виде периода и заканчивается двоеточием? – Mic1780

ответ

1

не Сгруппируйте регулярное выражение.

:%s/uc\d\+\w\+\.\d\+:// 

если вы хотите сгруппировать, используйте \( и \) вместо этого. если вы используете Perl-совместимый инструмент, это ( и ).

1

Вы можете использовать это регулярное выражение в vim/sed:

%s/uc\d\+\w\+\.\d\+:// 

Или еще:

g/uc\d\+\w\+\.\d\+:/d 
+0

но uc010obu.2 может быть ucxxxxxx.x – TonyGW

+0

Извините, плохая копия/вставка исправлена. – anubhava

1

Если вы хотите, чтобы соответствовать тексту только различным числа, вы можете попробовать эту модель:

uc(\d+)(\w+).(\d+): 

Чтобы попробовать, вы можете использовать веб-сайт http://rubular.com/