Regular-Expression

在 ed 中搜尋 X 而不是 Y

  • July 28, 2021

在編輯器 sam 中,可以使用以下命令搜尋並列印出字元串“ed”而不是“red”:

,x./*\n/ g/ed v/red p

我試圖找到一種在 ed 中做類似事情的方法。我想搜尋字元串“ed”但不獲取以下內容:

r ed, love ed, load ed等。

我熟悉 v 命令,但不確定如何將其與 ag 命令結合使用,或者是否可以在 ed 中使用。

最好使用包含單詞邊界標記的正則表達式來完成:

g/\<ed\>/p

請注意,我並不完全熟悉,sam因此我無法評論您正在顯示的編輯表達式。上面的表達式將列印包含單詞的每一**行,即字元串之前和之後的內容不是單詞字元。單詞字元是集合中的字元。and是零寬度斷言,將匹配單詞字元和非單詞字元之間的邊界。 ed``ed``[[:alnum:]_]``\<``\>

\<\>是非標準的,但在 GNU 系統和一些 BSD 系統上可用。macOS 使用[[:<:]]and[[:>:]]代替,而 GNU 系統還可以\b在單詞的開頭和結尾同時使用來匹配。

如果您想以可移植的方式執行此操作,則必須進行匹配[^[:alnum:]_]ed[^[:alnum:]_],但也要記住單詞出現在行首或行尾的特殊情況,或者一行ed中只有兩個字元的位置。

引用自:https://unix.stackexchange.com/questions/660375