我想用一個新名詞如何用sed中的新術語替換正則表達式模式?
我使用SED,但似乎有一個語法錯誤
sed 's/#[a-zA-Z0-9]+/replacement/g' terms
我怎樣才能糾正我的語法,以取代與哈希標籤開始的所有條款?
我想用一個新名詞如何用sed中的新術語替換正則表達式模式?
我使用SED,但似乎有一個語法錯誤
sed 's/#[a-zA-Z0-9]+/replacement/g' terms
我怎樣才能糾正我的語法,以取代與哈希標籤開始的所有條款?
sed
支持「基本正則表達式」(BRE),它不提供+
作爲特殊運算符。
正確的替換+
將是
sed 's/#[[:alnum:]]\{1,\}/replacement/g'
或
sed 's/#[[:alnum:]][[:alnum:]]*/replacement/g'
GNU sed
和最近BSD sed
要約 「擴展正則表達式」(ERE)匹配:
sed -E 's/#[[:alnum:]]+/replacement/g'
(雖然與GNU sed
你笑ULD可能使用,因爲-E
-r
目前無證)
,他們還提供\+
作爲擴展到BRE
,
sed 's/#[[:alnum:]]\+/replacement/g'
如果您需要的便攜性,你應該定期sed
的BRE
堅持。
@ user784637我用[[:alnum:]]
代替[a-zA-Z0-9]
。例如,這也可以將字母與變音符號相匹配。
$ printf "%s\n" ë è é | grep '[a-zA-Z0-9]'
$
與
$ printf "%s\n" ë è é | grep '[[:alnum:]]'
ë
è
é
$
你可以使用任何適合您的需求..
在我的sed版本上,+
沒有任何用處。您應該改用*
。
該訣竅。在'egrep -E'上,加號操作重複上一個術語1次或更多次,而星號重複上一個術語0次或更多次。 – user784637 2013-03-10 05:54:25
打開弔艙門,HAL – user784637 2013-03-10 07:25:04
我很抱歉戴夫,我恐怕我不能那樣做.. – Scrutinizer 2013-03-10 07:36:21