簡體   English   中英

Bash:sed正則表達式模式不匹配字符串

[英]Bash: sed regex pattern won't match strings

我已經在RegExr.com中測試了此特定正則表達式:

/(\*)*((\s)?(\w)*)/g

符合以下條件:

* Global Links contained...etc
* Change User, contact list...etc

(從...起的所有內容只是句子中的多余單詞,而不是文字... etc)

我試圖在sed命令中使用此正則表達式作為bash腳本的一部分,如下所示:

sed "/(\*)*((\s)?(\w)*)/d" test.txt > stripped.txt

但是這兩行仍然保留在stripped.txt中。 我在正則表達式或文件中沒有說明什么? 在這兩行之前是塊注釋(/ **)的開始,而塊注釋結束是在它們(* /)之后的,這兩個都是新行。 我是否錯過了一些換行的晦澀之處,或者sed命令/正則表達式錯誤?

默認情況下,您不考慮sed使用的正則表達式方言。 這不是有效的BRE(基本正則表達式)。

您需要告訴sed使用ERE(擴展的正則表達式)。

對於GNU sed是-r標志,對於BSD sed是-E標志(盡管-r通常可用作compat標志)。

sed -r "/(\*)*((\s)?(\w)*)/d" test.txt > stripped.txt

暫無
暫無

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

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