簡體   English   中英

為什么這個匹配數字的sed命令不起作用?

[英]Why does this sed command to match number not work?

我的命令是這樣的:

echo "12 cats" | sed 's/[0-9]+/Number/g'

(我在香草Mac中使用sed

我希望結果如下:

Number cats

但是,真正的結果是:

12 cats

有沒有人有這個想法? 謝謝!

+必須被反擊以獲得其特殊含義。

echo "12 cats" | sed 's/[0-9]\+/Number/g'

擴展+修飾符對我有用:

echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'

此外, -E開關會使+修飾符起作用,請參閱choroba的答案。

使用perl,這將適用於unix或linux。

echo "12 cats" | perl -pe 's/\d+/Number/g'

以非常神秘的方式解釋(至少在我到目前為止的資源中......),你應該檢查下一個術語:

globbing(在bash的上下文中),正則表達式,擴展的正則表達式

對於你的問題,似乎你給sed的expr是一個正則表達式或擴展的正則表達式....所以通過我讀過的教程你應該在sed中的實際命令之前插入-r ...

回聲“12只貓”| sed -r's / [0-9] + / Number / g'

在Ubuntu 16.04中為我工作,bash。

暫無
暫無

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

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