使用egrep时,在reg ex匹配中使用\w未按预期工作
我只想返回至少有一个字母或数字的行 使用使用egrep时,在reg ex匹配中使用\w未按预期工作,grep,Grep,我只想返回至少有一个字母或数字的行 使用egrep“[a-zA-Z0-9]” 但不是egrep“[\w]” 下面的例子 对我做错了什么有什么建议吗 echo '*****Full Input*****';cat GrepTestLog.log; echo '*****After RegEx match*****';cat GrepTestLog.log | egrep "[a-zA-Z0-9]" *****Full Input***** AB123C-1 *nbqtwrt
egrep“[a-zA-Z0-9]”
但不是egrep“[\w]”
下面的例子
对我做错了什么有什么建议吗
echo '*****Full Input*****';cat GrepTestLog.log; echo '*****After RegEx match*****';cat GrepTestLog.log | egrep "[a-zA-Z0-9]"
*****Full Input*****
AB123C-1 *nbqtwrt
AAABA1524
BAAAAA1524
AA A
AAAA
&&*&* +_+_
*****After RegEx match*****
AB123C-1 *nbqtwrt
AAABA1524
BAAAAA1524
AA A
TYABQEHD$
AAAA
但是\w确实有效
echo '*****Full Input*****';cat GrepTestLog.log; echo '*****After RegEx match*****';cat GrepTestLog.log | egrep "[\w]"
*****Full Input*****
AB123C-1 *nbqtwrt
AAABA1524
BAAAAA1524
AA A
AAAA
&&*&* +_+_
*****After RegEx match*****
AB123C-1 *nbqtwrt
据我所知,BRE/ERE实现都不支持在括号表达式中使用字符集,如
\s
,\w
,等等。如果您有gnugrep
,那么您可以使用grep-P
,这允许它们在括号表达式中
作为替代方法,您可以使用[:alnum:]
仅匹配字母或数字<代码>[\u[:alnum:]类似于\w
请参阅完整列表。您的意思是“使用egrep”[\w]”有效,但不使用egrep“[a-zA-Z0-9]”?此外,您能否提供一些您预期输出的示例?是的。示例在问题中。请参阅POSIX术语
[:alnum:][/code>中显示为代码的两个嵌入式代码段[:alnum:][/code>是字符类,而[:alnum:]
是括号表达式中的字符类。因此,在字符类中谈论\s
或任何其他转义序列都没有意义,因为如果它们显示为[\s]
它们不在字符类中,而是在括号表达式中。我知道还有其他术语混淆了术语“字符类”,但最好还是坚持使用POSIX术语,因为它清晰、简单且一致。