題 有什麼用?在grep命令..和實際使用


我試圖找到實際的實際用途?即,例如“egrep a?filename”但無法找到任何..它返回所有結果..

那麼,請幫助我,我可以知道egrep的實際用途?命令..

如果我使用'a?',它將返回所有結果,即字符串或行。它有0個,1個,2個等等...即我無法找到相同的使用..

謝謝


4
2017-08-15 15:13


起源




答案:


假設您想在腳本中匹配這樣的數字賦值表達式:

x=1234

其中一些數字是負數並且有一個減號:

x=-5678

你可以用這個:

grep -E "x=-?[0-9]+" *

問號使得減號可選。

(我不認為普通的grep支持 ? 要么 +因此 -E)。


8
2017-08-15 15:18



我明白了..非常感謝..還有什麼'egrep a?文件名'會實際做..如果你可以用文字說..
@RB: egrep a? filename 將匹配每一行。它本身沒用。 - RichieHindle
常規GNU grep(不帶-E)支持 ? 但你必須逃脫它。 echo "color" | grep "colou\?r"  應該回來 color。 - Matt Kneiser


這是一個單字符搜索,匹配前面的一個或零個字符。

注意:你需要逃避?通過使用\ first:\?。


4
2017-08-15 15:17



為什麼選擇downvote? :/
不是我的downvote,但我認為你的答案沒有任何意義。你的正則表達式是 i-? 但是你談到匹配 i+j。如果你想說的話 i+? 然後那仍然會匹配 i++。該 ? 不限制來的 後 比賽,所以 i+? 會愉快地匹配 i++。 - RichieHindle


? 不是基本的元字符 grep所以,如果你正在努力 a?,你實際上是在恭維 a 然後是問號。

如果你正在使用 egrep (又名 grep -E),然後答案表明 ? 是一個零或一個先前的實體正則表達式元字符是正確的。


4
2017-08-15 15:25



是的,先生,你是對的......但我懷疑的是,自己以前的角色出現0或1次總是正確的。那麼有什麼用呢?那麼,我需要知道這個在哪裡?是有用的..否則我們也會使用*也做同樣的事情,因為它返回相同的結果。
是, a? 單獨搜索是沒有意義的,因為它總是匹配。它只作為更大的正則表達式的一部分才有意義。 - chaos
你能舉出這樣一個reg-expression的例子嗎?我可以知道一個用法嗎?
他的意思是? =“”或“a”。在這種情況下,一切都匹配“”。您正在搜索一個字符的一個或零個字符,這些字符也可以匹配任何內容。
我剛剛給出了一個例子,有效地傳達了我的問題。但我需要的是“egrep?”的實際實現用途。是否有任何reg-expr從哪裡可以找到它的實際用途..


在正則表達式中,一個?表示0或1'a'。因此,如果您搜索其中包含0或1個字符串的字符串,您將獲得所有內容。一個有用的地方是匹配正整數:

/^\+?\d+$/

作為

^: beginning of line
\+: + sign
?: 0 or 1 of previous character
\d: digit
+: one or more of previous character
$: end of line

並且會匹配兩者 +123 和 456

看一下 regular-expressions.info 有關使用正則表達式的更多信息。


1
2017-08-15 17:39