我的命令是這樣的:爲什麼這個sed命令匹配號碼不起作用?
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我使用的是sed
香草蘋果機)
我希望得到的結果是:
Number cats
然而,真正的結果是:
12 cats
有沒有人有這方面的想法?謝謝!
我的命令是這樣的:爲什麼這個sed命令匹配號碼不起作用?
echo "12 cats" | sed 's/[0-9]+/Number/g'
(我使用的是sed
香草蘋果機)
我希望得到的結果是:
Number cats
然而,真正的結果是:
12 cats
有沒有人有這方面的想法?謝謝!
擴大+
修改工作對我來說:
echo "12 cats" | sed 's/[0-9][0-9]*/Number/g'
此外,-E
開關將使+
修改工作,看到choroba的答案。
似乎BSD sed默認不支持'+ .. – 2013-05-09 14:30:18
使用Perl,這將工作在UNIX或Linux。
echo "12 cats" | perl -pe 's/\d+/Number/g'
在未(在資源至少我迄今..)解釋一個非常神祕的方式, 您應該檢查了下方面:
通配符(在bash的上下文中) , 正則表達式, 擴展的正則表達式
對於你的問題似乎是你給的sed的EXPR」是一個正則表達式或擴展正則表達式....所以由教程中,我讀你應該在你的實際還插入了-r命令在sed ...
回聲「12只貓」| sed -r's/[0-9] +/Number/g'
適用於Ubuntu 16.04,bash。
我沒有看到它是4年前....可能我的回答不再是關鍵任何更多哈哈......但它強調我的第一行的答案。 – YigalO 2017-07-08 09:37:17
對於linux,你可以使用'-r'選項來sed,對於Mac,你可以使用'-E' ...這也適用於Linux的一些變種作爲兼容性shim – Petesh 2013-05-09 14:27:07