gegrep命令工作不一致

时间:2016-02-03 12:33:44

标签: shell unix solaris-10

我试图从文件中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

1 个答案:

答案 0 :(得分:0)

似乎在不成功的情况下,ENIQ_STATS_ROOT_cbtcnbgrn2eniqs2-bkup后面没有空格/空格,而在成功的情况下,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

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