Sto tentando di eseguire regex PCRE e utilizzarlo in SED, ma sto riscontrando alcuni problemi. Si noti che questa domanda è rappresentativa di un problema più grande (come convertire regex PCRE per lavorare con SED) quindi la domanda non è semplicemente circa l'esempio di seguito, ma su come utilizzare regex PCRE in regex SED nel suo complesso.PCRE Regex a SED
Questo esempio sta estraendo un indirizzo email da una linea e sostituendolo con "[emailaddr]".
echo "My email is [email protected]" | sed -e 's/[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4}/[emailaddr]/g'
ho provato la seguente espressione regolare sostituzione:
([a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4})
[a-zA-Z0-9]+[@][a-zA-Z0-9]+[\.][A-Za-z]{2,4}
([a-zA-Z0-9]+[@][a-zA-Z0-9]+[.][A-Za-z]{2,4})
[a-zA-Z0-9]+[@][a-zA-Z0-9]+[.][A-Za-z]{2,4}
Ho provato a cambiare il delimitato di sed da s/trovare/sostituire/ga s | ricerca | sostituire | g come descritto here (stack overflow: pcre regex to sed regex).
Non riesco ancora a capire come utilizzare l'espressione regolare PCRE in SED, o come convertire la regex PCRE in SED. Qualsiasi aiuto sarebbe grande.
Si noti che '.' non è speciale in' [parentesi] ', in modo da non lo fai devi scappare: '[.]' sta bene. Inoltre, '@' non è speciale nelle espressioni regolari, quindi non è necessario metterlo tra parentesi (a meno che non ti piaccia il suo aspetto) –
Grazie per il suggerimento. – Sugitime
Solo un consiglio, sai che puoi usare perl in un modo molto simile a sed (sintassi saggio) e ovviamente supponiamo PCRE 'perl -pe '/ oldstring/newstring /'' – Tiago