gegrep 命令工作不一致

gegrep command working inconsistently

我正在尝试从文件中 grep 某些模式并将其列出,但 grep 命令无法始终如一地工作。
对于其中一种模式它的工作和其他它不工作。如果我遗漏了什么,请告诉我:

要grep的文件

===============================================================================================================================
START_TIME               END_TIME                 CLIENT_NAME                   STATUS         BACKUP_TYPEPOLICY_NAME
===============================================================================================================================
2015-12-09 01:51:35      2015-12-09 02:11:47      atrcxb1144-bup3               success        FULL      atrcxb1144-bup3_FILES
2015-12-09 02:13:06      2015-12-09 02:14:12      atrcxb1144-bup3               success        FULL      atrcxb1144-bup3_Hot_Catalog
2015-12-15 08:17:48      2015-12-15 08:18:55      atrcxb1144-bup3               success        FULL      atrcxb1144-bup3_Hot_Catalog
2016-01-23 23:55:00      2016-01-24 00:17:03      cbtcnbgrn2eniqs2-bkup         success        FULL      ENIQ_STATS_ROOT_cbtcnbgrn2eniqs2-bkup

未成功

bash-3.2# /usr/sfw/bin/gegrep '([[:blank:]]+success[[:blank:]]+[FI][UN][LC][LR][[:blank:]]+ENIQ_STATS_ROOT_cbtcnbgrn2eniqs2-bkup[[:blank:]]+)' /usr/openv/netbackup/db/.backup_history
bash-3.2# echo $?
1

成功

bash-3.2# /usr/sfw/bin/gegrep '([[:blank:]]+success[[:blank:]]+[FI][UN][LC][LR][[:blank:]]+ENIQ_STATS_ONBLADE_RAW_cbtcnbgrn2eniqs2-bkup[[:blank:]]+)' /usr/openv/netbackup/db/.backup_history
2016-01-23 23:55:00      2016-01-24 00:17:03      cbtcnbgrn2eniqs2-bkup         success        FULL      ENIQ_STATS_ONBLADE_RAW_cbtcnbgrn2eniqs2-bkup                   
bash-3.2# echo $?
0

似乎在不成功的情况下,ENIQ_STATS_ROOT_cbtcnbgrn2eniqs2-bkup后面没有space/blank,而在成功的情况下,ENIQ_STATS_ONBLADE_RAW_cbtcnbgrn2eniqs2-bkup是。

并且您的正则表达式匹配这两列末尾所需的空白。

所以 grep 按预期工作,并且要匹配你不成功的字符串,你需要用 [[blank]]* 替换最后的 [[blank]]+ 如下:

bash-3.2# /usr/sfw/bin/gegrep '([[:blank:]]+success[[:blank:]]+[FI][UN][LC][LR][[:blank:]]+ENIQ_STATS_ROOT_cbtcnbgrn2eniqs2-bkup[[:blank:]]*)' /usr/openv/netbackup/db/.backup_history

+ 匹配前一个模式的一次或多次出现,而 * 出现零次或多次。