我试图从文件中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
答案 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
+
匹配上一个模式的一个或多个匹配项,而*
出现零次或多次。