2013-02-03 68 views

回答

21

\ d是一個不是正則表達式宏的開關。如果你想使用[0-9]表達的一些預定義的「常數」 istead只是試圖通過增加-E運行這段代碼

s/[[:digit:]]+//g 
+5

但爲什麼'\ w'工作 – user2036880

+4

因爲它寫的是sed文檔 「\ w 匹配任何」單詞「字符。」單詞「字符是任何字母或數字或下劃線字符。 「另外,這個版本的sed支持多個轉義字符(其中一些是多字符),以便在腳本中插入不可打印的字符(\ a,\ c,\ d,\ o ,\ r,\ t,\ v,\ x)。這些可能會導致爲其他seds編寫腳本的類似問題。「有關更多信息,請參閱http://www.gnu.org/software/sed/manual/sed.html – Kamil

+0

@ user2036880,正如我在答案的第二部分中指出的那樣,在\ sed中\ d具有不同的含義。 –

13

有沒有這樣的特殊字符組在sed。您將不得不使用[0-9]

在GNU sed中,\d在0-255範圍內引入了一到三位數字的十進制字符代碼。 如圖所示in this comment

-1

你最好使用擴展模式在sed。 在基本RegExp中,\ d和其他一些不會被檢測到 -E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's). The re_format(7) manual page fully describes both formats.

+1

'\ d'也不會被-E檢測到。 –

相關問題