我很努力從grep
獲得匹配結果。grep不匹配正則表達式
考慮下面的輸入文件的內容
{ 「富」:29, 「酒吧」:30}
和下面的命令grep -o '"[^"]+":[0-9]+' input.txt
,我很期待兩個匹配的結果。據我所知它支持正則表達式,但我不明白爲什麼grep
不會返回任何結果?
正則表達式的其他實現工作正常(https://regex101.com/r/RcONXk/1)。
我很努力從grep
獲得匹配結果。grep不匹配正則表達式
考慮下面的輸入文件的內容
{ 「富」:29, 「酒吧」:30}
和下面的命令grep -o '"[^"]+":[0-9]+' input.txt
,我很期待兩個匹配的結果。據我所知它支持正則表達式,但我不明白爲什麼grep
不會返回任何結果?
正則表達式的其他實現工作正常(https://regex101.com/r/RcONXk/1)。
你可以試試這個;
grep -oE '"[^"]+":[0-9]+'
如:
[email protected]:/tmp$ echo '{"foo":29, "bar":30}' | grep -oE '"[^"]+":[0-9]+'
"foo":29
"bar":30
人的grep:
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see below). (-E is specified by POSIX.)
默認情況下,grep與正則表達式不匹配。使用e標誌:
grep -oe 'pat' file
或者使用egrep(自動將pattern作爲正則表達式)。
egrep -o 'pat' file
這不起作用(因爲'-e'),但另一條評論指出我可以使用'-E'。 – Caramiriel
-E是擴展正則表達式,而-e只是正則表達式。我的錯! –
沒問題,謝謝幫忙! :)'egrep'也可以 – Caramiriel
嘗試增加'-E'到grep命令行。 – dawg
'-E'好像在工作,'-e'不好。我想我必須閱讀更多關於擴展正則表達式:)。你可以把它作爲答案嗎? – Caramiriel
'-e'只是將正則表達式作爲下一個參數。例如,它避免了正則表達式可能以短劃線開頭的問題。或者它允許你有多個正則表達式。 –