2013-02-03 8 views

risposta

21

\ d è un interruttore non una macro di espressione regolare. Se si desidera utilizzare alcuni predefinito istead "costante" di espressione [0-9] solo provare eseguire questo codice

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

ma allora perché '\ w' funziona – user2036880

+4

Come è scritto è la documentazione sed " \ w Corrisponde a qualsiasi carattere di "parola". Un carattere di "parola" è qualsiasi lettera o cifra o il carattere di sottolineatura. " E c'è un'altra linea interessante "Inoltre, questa versione di sed supporta diversi caratteri di escape (alcuni dei quali sono multi-carattere) per inserire caratteri non stampabili negli script (\ a, \ c, \ d, \ o , \ r, \ t, \ v, \ x). Questi possono causare problemi simili con script scritti per altri sed. " Per ulteriori informazioni su http://www.gnu.org/software/sed/manual/sed.html – Kamil

+0

@ user2036880 come indico nella seconda parte della mia risposta '\ d' ha un significato diverso in sed. –

13

Non esiste gruppo di caratteri speciali in sed. Dovrai usare [0-9].

In GNU sed, \d introduce un codice decimale di carattere da una a tre cifre nell'intervallo 0-255. Come indicato in this comment.

-1

È meglio utilizzare il modello esteso in sed con l'aggiunta di -E. In RegExp di base, \ d e alcuni altri non saranno rilevati -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' non verrà rilevato con -E. –

Problemi correlati