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