Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用egrep时,在reg ex匹配中使用\w未按预期工作_Grep - Fatal编程技术网

使用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术语,因为它清晰、简单且一致。