Linux
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
甚至沒有出現在《絕命毒師》中。我又試了一次,得到了同樣的結果。它不考慮最後一個字元。我寫它的方式有什麼問題嗎?您可以從https://cdn.cs50.net/2021/x/seminars/linux/shows.csv下載文件 shows.csv
在您的程式碼
o*
中表示“零次或多次出現o
”。您似乎將正則表達式與 glob 語法(其中的o*
意思是“一個o
和零個或多個任意字元”)混淆了。在
Breaking Bad
之後正好有零個o
字元Br
,因此它匹配bro*
(不區分大小寫)。
grep -i bro shows.csv
會做你想做的(我認為)。
這裡的 o* 意味著“零或更多”。如果您想要帶有星號的所需輸出,您可以在 o 之後添加一個隨機字母,如下所示:
$ grep -i “broa*” 顯示.csv
1845307,2 Broke Girls,2011,138,6.7,89093 1702042,國外白痴,2010,21,8.3,29759 2249364,Broadchurch,2013,24,8.4,89378 1733785,Bron/Broen,20151,38,8.6,6 2467372,布魯克林九九,2013,145,8.4,209571 1355642,鋼之煉金術師:兄弟會,2009,69,9.1,111111
否則,
grep -i "bro" shows.csv
將工作。HTH。