0

我有一个包含一系列行的文件,如下所示:

dbxxx
dbxxxx
dbxx
tdxx
tdxxx
sbxx
sbxxxxx
dbxx_migrated
tdxxx_old

其中 x = 一位数。

我需要创建一个输出,以确保显示以下开头的行:db、td 和 sb,并排除任何具有 _migrated 和 _old 的行。

这可以使用grep吗?

4

2 回答 2

2

您可以将正则表达式和逻辑运算符与awk

$ awk '/^(db)|(td)|(sb)/ && !/_(old)|(migrated)/' file
dbxxx
dbxxxx
dbxx
tdxx
tdxxx
sbxx
sbxxxxx
于 2013-10-24T19:14:59.953 回答
0
grep -E '^(db|td|sb)' file | grep -Ev '_(migrated|old)$'

或者

perl -lne 'print if /^(db|td|sb)/ and not /_(migrated|old)$/' file
于 2013-10-24T19:58:40.080 回答