Sto cercando di utilizzare \d
in regex in sed, ma non funziona:Perché ` d` non funziona in espressioni regolari in sed?
sed -re 's/\d+//g'
Ma questo sta lavorando:
sed -re 's/[0-9]+//g'
Sto cercando di utilizzare \d
in regex in sed, ma non funziona:Perché ` d` non funziona in espressioni regolari in sed?
sed -re 's/\d+//g'
Ma questo sta lavorando:
sed -re 's/[0-9]+//g'
\ 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
ma allora perché '\ w' funziona – user2036880
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
@ user2036880 come indico nella seconda parte della mia risposta '\ d' ha un significato diverso in sed. –
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.
È 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.
'\ d' non verrà rilevato con -E. –
Perché hai scritto male. Funziona bene: 'perl -e 's/\ d + // g''. Non so cosa sia il '-r', perché non fa parte di POSIX. – tchrist
@tchrist quando ho detto che uso perl – user2036880
Hai frainteso lo scherzo. – tchrist