2013-10-24 42 views
0

我有一个包含一系列的线,如下文件:匹配线

dbxxx 
dbxxxx 
dbxx 
tdxx 
tdxxx 
sbxx 
sbxxxxx 
dbxx_migrated 
tdxxx_old 

其中X =一个数字。

我需要创建一个输出,以确保显示以下列开头的行: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