Grep';单词边界包括空格吗?
我尝试使用grep搜索包含单词“bead”的行,使用“\b”,但它没有找到包含单词“bead”的行,单词之间用空格分隔。我尝试了以下脚本: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 但我没有得到
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
看起来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报告链接