grep命令有问题吗?我收到的字符与我的正则表达式不匹配

grep命令有问题吗?我收到的字符与我的正则表达式不匹配

我运行了这个命令:

grep -i 'bro*' shows.csv

并将其作为输出

1845307,2 Broke Girls,2011,138,6.7,89093
1702042,An Idiot Abroad,2010,21,8.3,29759
903747,Breaking Bad,2008,62,9.5,1402577
2249364,Broadchurch,2013,24,8.4,89378
1733785,Bron/Broen,2011,38,8.6,56357
2467372,Brooklyn Nine-Nine,2013,145,8.4,209571
7569592,Chilling Adventures of Sabrina,2018,36,7.6,69041
7221388,Cobra Kai,2018,31,8.7,72993
1355642,Fullmetal Alchemist: Brotherhood,2009,69,9.1,111111
118360,Johnny Bravo,1997,67,7.2,32185
455275,Prison Break,2005,91,8.3,465246
115341,Sabrina the Teenage Witch,1996,163,6.6,33458
1312171,The Umbrella Academy,2019,20,8,140800
3339966,Unbreakable Kimmy Schmidt,2015,51,7.6,61891

bro坏在哪里?事实上,o他甚至没有出现在《绝命毒师》中。我又尝试了一次,得到了同样的结果。它不考虑最后一个字符。我写的方式有问题吗?

您可以从以下位置下载文件shows.csvhttps://cdn.cs50.net/2021/x/seminars/linux/shows.csv

答案1

在您的代码中o*意味着“零次或多次出现o”。看来您将正则表达式与 glob 语法混淆了(其中o*表示“一个o和零个或多个任何字符”)。

在后面Breaking Bad正好有零个o字符Br,因此它匹配bro*(不区分大小写)。

grep -i bro shows.csv会做(我认为)你想做的事。

答案2

这里的 o* 意味着“零个或多个”。如果您想要带有星号的所需输出,您可以在 o 之后添加一个随机字母,如下所示:

$ grep -i“broa*”显示.csv

1845307,2 破产女孩,2011,138,6.7,89093 1702042,国外白痴,2010,21,8.3,29759 2249364,布罗德彻奇,2013,24,8.4,89378 1733785,布朗/布罗恩,2011,38,8。 6,56357 2467372、布鲁克林九九、2013、145、8.4、209571 1355642、钢之炼金术师:兄弟会、2009、69、9.1、111111

否则,grep -i "bro" shows.csv会起作用。

HTH。

相关内容