簡體   English   中英

用編號組了解sed正則表達式

[英]understanding sed regex with numbered groups

我想了解這個sed正則表達式。

       sed 's/.*\(ADDR=[^|]*\) |.*/\1/'

如果我沒看錯,上面的代碼將在一行中的任何位置搜索模式ADDR=<something>並將其替換為第一組。 我在這里沒有[^ |]的含義。 謝謝你的幫助。

[^...]匹配不在類中的任何單個字符。

| 豎線分隔兩個或多個替代項。 如果滿足任何替代條件,則會發生匹配。 例如, gray|grey匹配graygrey

[^|]匹配|以外的任何內容 字符類中的^否定字符類,而| sed使用時,它的實際含義是寬松的。

\\(ADDR=[^|]*\\) |.*/\\1/

這里

  • [^|]匹配|以外的任何內容 量詞*量化零次或多次出現。 字符類中的^否定字符類。

  • | 匹配字符|

注意sed元字符中,例如| ( )等將失去其含義,所以| 不是交替,而是匹配| 字符。 如果要這樣處理元字符,則-r (擴展的正則表達式)將這樣做(使用GNU sed ;使用-E和BSD sed )。 還是轉義\\|

例:

$ echo "hello ADDR= hello | world " | sed 's/.*\(ADDR=[^|]*\) |.*/\1/'
ADDR= hello

這里(ADDR=[^|]*\\)ADDR= hello匹配,其中包含|以外的任何內容|

暫無
暫無

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

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