簡體   English   中英

用grep的正則表達式不起作用?

[英]regular expression with grep not working?

我在Windows 7上運行cygwin,grep 2.21。
我試圖從netstat獲取所有tcp連接,所以我運行以下命令:

netstat | grep -i "^(TCP|UDP)"

現在,它什么也不返回,但是當我運行netstat它顯然返回了許多tcp連接。 我也嘗試過:

netstat | egrep -i "^(TCP|UDP)"

也不會返回任何內容。 我在這里想念什么? 我認為插入符號的意思是“開頭”。 謝謝。

對我來說, netstat | grep -P '(tcp|udp)' netstat | grep -P '(tcp|udp)'工作。

如有必要,您可能希望使用i標志忽略大小寫。

netstat | grep -Pi '(TcP|UDp)'

關於此處的其他答案,使用egrepgrep -e得到相同的結果。 基於

-P標志受此帖子的啟發。

根據man grep使用選項-P ,將模式解釋器設置為 不知道為什么沒有-P就無法運行。

使用小寫字符輸出協議。 請嘗試以下任一方法:

netstat | grep '^\(udp\|tcp\)'

要么

netstat | egrep '^(udp|tcp)'

兩者之間的區別在於支持擴展的正則表達式語法,其中()| 不應該逃脫。 正如Reuel Ramos Ribeiro指出的那樣, egrep等效於使用grep -e因此可以使用netstat | grep -e '^(udp|tcp)' netstat | grep -e '^(udp|tcp)'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM