2013-10-24 2 views
0

У меня есть файл, который содержит ряд строк следующим образом:Совпадение строки, начинающаяся с буквами и, специфическими исключающая определенными словами

dbxxx 
dbxxxx 
dbxx 
tdxx 
tdxxx 
sbxx 
sbxxxxx 
dbxx_migrated 
tdxxx_old 

где х = один цифру.

Мне нужно создать вывод, который будет отображать строки, начинающиеся со следующих: db, td и sb и исключать любые строки, которые _migrated и _old.

Можно ли использовать grep?

+2

Да, его можно. __info grep__ - ваш друг. – devnull

ответ

2

Вы можете комбинировать регулярные выражения и логические операторы с awk:

$ awk '/^(db)|(td)|(sb)/ && !/_(old)|(migrated)/' file 
dbxxx 
dbxxxx 
dbxx 
tdxx 
tdxxx 
sbxx 
sbxxxxx 
0
grep -E '^(db|td|sb)' file | grep -Ev '_(migrated|old)$' 

или

perl -lne 'print if /^(db|td|sb)/ and not /_(migrated|old)$/' file 
Смежные вопросы