2016-02-03 60 views
0

我想從文件中grep某些模式並列出它,但grep命令工作不一致。
對於其中一個模式的工作和其他不工作。請讓我知道如果我錯過什麼:gegrep命令工作不一致

文件到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

好像在不成功的情況下,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

+匹配一次或多次出現之前的模式,而*零次或多次發生。