[英]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.