2013-03-21 10 views
3

У меня есть следующие строки в текстовом файле (большой, больше похоже на эти и разные):Заменить некоторые строки из текста с SED и REGEX

79A18D7F-1517-5981-8446-3A0452727B06 
7842A72D-1517-5281-84E4-EAEF09B743F7 
6040BEE7-1517-5982-84C1-419B224E647E 
615F2747-1517-5981-84AF-787C34967FB2 
7468A3E3-1517-5931-84B3-3FC3F701C269 

я могу найти их с помощью Grep и регулярное выражение:

'[0-9A-F]{8}-[0-9]{4}-[0-9]{4}-[0-9A-F]{4}-[0-9A-F]{12}' 

что СЕПГ синтаксис регулярных выражений, чтобы удалить их, потому что:

sed "s/[0-9A-F]{8}-[0-9]{4}-[0-9]{4}-[0-9A-F]{4}-[0-9A-F]{12}//g" 

не похоже на работу.

Спасибо!

ответ

4

Использование sed -r. Вы полагаетесь на расширенные функции синтаксиса регулярных выражений, не избегая их, но с sed -r вам не обязательно. Если вы действительно хотите удалить строки, а не только очищая их, вы можете использовать:

sed -r "/regex/d" 
+0

Wow , это действительно работает! Благодаря! – bsteo

+0

Нет, это нормально, я просто хочу удалить строку, а не строку. – bsteo

1

Кроме того, для регулярного СЭД (BRE) вы должны экранировать фигурные скобки:

sed 's/[0-9A-F]\{8\}-[0-9]\{4\}-[0-9]\{4\}-[0-9A-F]\{4\}-[0-9A-F]\{12\}//g' file 
Смежные вопросы