Regex grep未知标志-(?!5)

Regex grep未知标志-(?!5),regex,grep,Regex,Grep,我是从另一个用户的bash日志中得到的。 我不知道这是怎么回事?!grep上的5是。 我真的不确定什么是灰色,但最让人迷惑的是颜色?!五, 同样在第二个grep中,用户使用了?:-这也让我感到困惑 casper@casperfoo:/local/data/log $ GREP_COLOR='01;32' grep -P --color '\]: (?!5:).*\* . YELP' /local/data/log/ulpx-0210.34804.log STATS 10/1 07:58:59.5

我是从另一个用户的bash日志中得到的。 我不知道这是怎么回事?!grep上的5是。 我真的不确定什么是灰色,但最让人迷惑的是颜色?!五,

同样在第二个grep中,用户使用了?:-这也让我感到困惑

casper@casperfoo:/local/data/log $ GREP_COLOR='01;32' grep -P --color '\]: (?!5:).*\* . YELP'
/local/data/log/ulpx-0210.34804.log
STATS 10/1 07:58:59.541179 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 10: market 3 mnemonic - *: * . YELP
STATS 10/1 08:00:06.192371 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 60: market 3 mnemonic - *: * . YELP
STATS 10/1 08:25:11.278688 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 527: market 3 mnemonic - *: * . YELP
STATS 10/1 08:25:12.332410 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 543: market 3 mnemonic - *: * . YELP
STATS 10/1 08:25:14.731410 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 552: market 3 mnemonic - *: * . YELP
STATS 10/1 08:25:14.973049 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 556: market 3 mnemonic - *: * . YELP
STATS 10/1 08:25:14.983558 34804 menhir_service.cpp:301 [handleMarketDataSubs]: 560: market 3 mnemonic - *: * . YELP

casper@casperfoo:/local/data/log $
casper@casperfoo:/local/data/log $
casper@casperfoo:/local/data/log $ GREP_COLOR='01;32' grep -P --color '\]: (?:10|60|527|543|552|556|560):.*app.name'  /local/data/log/ulpx-0210.34804.log
DEBUG 10/1 07:58:59.472317 34804 menhir_service.hpp:140 [on_open]: 10:  app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 07:58:59.502264 34804 menhir_service.cpp:78 [handleProperties]: 10: app.name=prod/ulsub10
DEBUG 10/1 08:00:05.129861 34804 menhir_service.hpp:140 [on_open]: 60:  app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:00:05.154347 34804 menhir_service.cpp:78 [handleProperties]: 60: app.name=prod/ogen-10b-3
DEBUG 10/1 08:25:11.193841 34804 menhir_service.hpp:140 [on_open]: 527:         app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:25:11.263360 34804 menhir_service.cpp:78 [handleProperties]: 527: app.name=prod/qgen-amxo-3
DEBUG 10/1 08:25:12.254483 34804 menhir_service.hpp:140 [on_open]: 543:         app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:25:12.316808 34804 menhir_service.cpp:78 [handleProperties]: 543: app.name=prod/qgen-xisx-3
DEBUG 10/1 08:25:14.589141 34804 menhir_service.hpp:140 [on_open]: 552:         app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:25:14.715101 34804 menhir_service.cpp:78 [handleProperties]: 552: app.name=prod/qgen-xcbo-2
DEBUG 10/1 08:25:14.796188 34804 menhir_service.hpp:140 [on_open]: 556:         app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:25:14.842203 34804 menhir_service.hpp:140 [on_open]: 560:         app.name -> prod/ulpx.celoxica.2
DEBUG 10/1 08:25:14.953661 34804 menhir_service.cpp:78 [handleProperties]: 556: app.name=prod/qgen-xpho-2
DEBUG 10/1 08:25:14.964403 34804 menhir_service.cpp:78 [handleProperties]: 560: app.name=prod/qgen-xbox-2
casper@casperfoo:/local/data/log $

特别是分组和捕获部分:

在多个标记周围放置括号以将它们分组在一起。然后可以对组应用量词。例如,设置值?匹配集合或集合值

括号创建一个捕获组。上面的示例有一个组。匹配后,如果集合匹配,则第一组不包含任何内容。如果SetValue匹配,则它包含值。如何访问组内容取决于您使用的软件或编程语言。组0始终包含整个正则表达式匹配

使用特殊语法集?:值?在不创建捕获组的情况下对令牌进行分组。如果您不打算使用组的内容,这将更有效。不要将非捕获组语法中的问号与量词混淆

以及环顾部分:

环顾是一种特殊的群体。组内的令牌正常匹配,但正则表达式引擎会让组放弃匹配,只保留结果。环视匹配一个位置,就像锚一样。它不展开正则表达式匹配

q?=u与问题中的q匹配,但在伊拉克不匹配。这是积极的前瞻。u不是整个正则表达式匹配的一部分。在u前面的字符串中的每个位置上,前视匹配

q?!在伊拉克,u与q匹配,但没有问题。这是消极的前瞻。将尝试前瞻中的令牌,放弃它们的匹配,并反转结果

要向后看,请使用lookback?grep的-P选项指示grep使用与Perl兼容的正则表达式。有关更多详细信息,请参阅。