我對grep如何解釋括號表達式(OSX 1.8)有點困惑。grep模式中的括號表達式
我有行文件,如下所示:
1 foo 42.0
2 bar 42.1
20 foo 42.3
我想寫一個正則表達式,上面寫着:「在一行,比賽開始,然後一個或多個數字的空白,則字符串富」。所以我嘗試:
cat foo | grep -e "^[0-9]+\sfoo"
但沒有任何匹配。咦?這裏發生了什麼?我在文檔中挖掘過,但我似乎無法找到任何答案。這個問題似乎是在我應用「一個或多個」角色時。
請注意,我不能使用Perl風格的表達式,因爲此功能似乎從OSX 10.8中的grep中消失了。
上面的工作。除了未能逃脫'+',原始模式只會匹配一個空格字符。目前還不清楚輸入是使用製表符還是多個空格。如果它使用多個空格,那麼這將是原始模式不匹配的另一個原因。 –
你不需要使用擴展修飾符來轉義'+'? – hwnd
嗯?我沒有聲稱你的回答有任何問題。我澄清說,你修正的問題之一是接受多個空格。也就是說,我剛剛測試過''s'與我的系統中'grep'版本中的空格不匹配,所以您仍然需要像第一個示例中那樣使用'[[:space:]]''。 –