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

Shu*_*TCH 15 linux command-line grep

我运行了这个命令:

grep -i 'bro*' shows.csv
Run Code Online (Sandbox Code Playgroud)

并将其作为输出

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
Run Code Online (Sandbox Code Playgroud)

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

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

Kam*_*ski 79

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

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

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