Grep';单词边界包括空格吗?

Grep';单词边界包括空格吗?,grep,words,Grep,Words,我尝试使用grep搜索包含单词“bead”的行,使用“\b”,但它没有找到包含单词“bead”的行,单词之间用空格分隔。我尝试了以下脚本: cat in.txt | grep -i "\bbead\b" > out.txt 我得到的结果是 BEAD-air.JPG 胎圈,3面MET DP110317.jpg 珠子-2819(FindID 10143).jpg 珠子(宝石),富华遗址(东奈省)的文物。jpg 罗马诺英国吊坠护身符(珠)(FindID 241983).jpg 但我没有得到

我尝试使用grep搜索包含单词“bead”的行,使用“\b”,但它没有找到包含单词“bead”的行,单词之间用空格分隔。我尝试了以下脚本:

cat in.txt | grep -i "\bbead\b" > out.txt
我得到的结果是

  • BEAD-air.JPG
  • 胎圈,3面MET DP110317.jpg
  • 珠子-2819(FindID 10143).jpg
  • 珠子(宝石),富华遗址(东奈省)的文物。jpg
  • 罗马诺英国吊坠护身符(珠)(FindID 241983).jpg
但我没有得到像这样的结果

  • 珠子乐趣.jpg
我只收到92行,而不是2000行

我的操作系统是Windows10-64位,但我使用的是GnuWin32软件包中的Grep2.5.4

我也尝试过MSYS2,它包括Grep3.0,但它也做了同样的事情

然后,我如何搜索由空格分隔的单词

以后编辑:
看起来grep在处理大文件方面有问题。我的输入文件大小为2.4 GB。对于较小的文件,它可以工作-我在这里报告了错误:

您通常所做的应该可以工作,但是有一些方法可以设置什么是和什么不是单词边界。与其担心,不如尝试以下方法:

cat in.txt | grep -iP "\bbead(\b|\s)" > out.txt
p选项添加了Perl正则表达式能力,\s匹配任何类型的空格字符。或条分隔栏中的选项

在您等待修复grep时,如果您可以使用其他工具,您可以使用它。例如

perl -lane 'print if (m/\bbead\b/i);' in.txt > out.txt

你通常所做的应该是有效的,但是有一些方法可以设置什么是和什么不是单词边界。与其担心,不如尝试以下方法:

cat in.txt | grep -iP "\bbead(\b|\s)" > out.txt
p选项添加了Perl正则表达式能力,\s匹配任何类型的空格字符。或条分隔栏中的选项

在您等待修复grep时,如果您可以使用其他工具,您可以使用它。例如

perl -lane 'print if (m/\bbead\b/i);' in.txt > out.txt
试试这个

cat in.txt | grep -wi "bead" 
-w
为您提供了一个完整的单词搜索

试试这个

cat in.txt | grep -wi "bead" 

-w
为您提供了一个完整的单词搜索

也许这是可能的:
grep-i'\bbead\b'
适合我。您如何在windows上使用
cat
?@Toto-我使用的是GnuWin32软件包。它包含了所有的Linux工具。也许这是可能的:
grep-i'\bbead\b'
适合我。您如何在windows上使用
cat
?@Toto-我使用的是GnuWin32软件包。它包含所有的Linux工具。很高兴知道,谢谢。看起来grep在处理大文件时有一个bug——我更新了我的问题,并加入了bug报告链接,很高兴知道,谢谢。在处理大文件时,grep中似乎有一个bug——我更新了我的问题,并加入了bug报告链接