2012-06-26 4 views
1

Извините за мой простой вопрос. но я ищу способ удалить строки в файле, которые начинаются со строки, содержащей 2 или 3 заглавных буквы, а также содержат дату. например:удалить строки, содержащие дату и другое выражение

ABC/ Something comes here, 29/1/2001. 

на первом этапе написания такого сценария, я использовал этот код, чтобы найти и показать строки, которые содержат дату, но она не работает.

sed -e 's/[0-9]+\/[0-9]+\/[0-9]+//' myfile.txt 

Что не так в этом коде и как я могу изменить его, чтобы делать то, что я хочу?

Bests.

ответ

1
sed -r -e '/[A-Z]+.*[0-9]+\/[0-9]+\/[0-9]+/p;d' # on Mac OSX: sed -E -e ... 

А потом просто удалить эти строки сделать что-то вроде ...

'/[A-Z]+.*[0-9]+\/[0-9]+\/[0-9]+/d' 
1

Я хотел бы попробовать с:

sed -e '/^[A-Z]\{2,3\}.*[0-9]\{1,2\}\/[0-9]\{1,2\}\/[0-9]\{4\}/ d' input-file 

Объяснение:

^     Match at the beginning of the pattern. 
[A-Z]\{2,3\}  Match two or three uppercase ASCII letters. 
.*     Match anything. 
[0-9]\{1,2\}\/  Match the day, one or two digits, and the separator. 
[0-9]\{1,2\}\/  Same match for the month. 
[0-9]\{4\}   Match four digits for the date. 
d     If previous regexp matched, delete the line. 
Смежные вопросы