regex - sharp - Expresión regular en sed para reemplazos múltiples en una declaración
regex replace() (3)
Con
sed -e ''s/Find/Replace/g;s/Find/Replace/g;[....];/Find/Replace/g''
harás el truco
Por lo tanto, traducir a lo que necesita
sed -e ''s/æ/ae/g;s/ø/oe/g;s/å/aa/g;s/Æ/Ae/g;s/Ø/Oe/g;s/Å/Aa/g''
Quiero desinfectar algunas entradas y reemplazar varios caracteres con una entrada aceptable, por ejemplo, un danés '' å
'' con '' aa
''.
Esto se hace fácilmente usando varias declaraciones, por ejemplo, /æ/ae/
, /å/aa/
, /ø/oe/
, pero debido a las limitaciones de la herramienta, quiero poder hacer esto en una sola expresión regular.
Puedo capturar todos los casos relevantes ( /[(æ)(ø)(å)(Æ)(Ø)(Å)]/
) pero el reemplazo no funciona como yo quiero (pero probablemente completamente como estaba previsto) :
$ temp="RødgrØd med flæsk"
$ echo $temp
RødgrØd med flæsk
$ echo $temp | sed ''s/[(æ)(ø)(å)(Æ)(Ø)(Å)]/(ae)(oe)(aa)(Ae)(Oe)(Aa)/g''
R(ae)(oe)(aa)(Ae)(Oe)(Aa)dgr(ae)(oe)(aa)(Ae)(Oe)(Aa)d med fl(ae)(oe)(aa)(Ae)(Oe)(Aa)sk
(la primera línea de eco es para mostrar que no es un problema de codificación)
Solo como un lado, la cuestión de la herramienta es que también me gustaría utilizar la misma expresión regular en un fragmento de Sublime Text 2 .
¿Alguien puede discernir qué está mal con mi declaración de expresiones regulares?
Gracias por adelantado.
Dividirlo en varias sentencias sed
, separadas por ;
:
sed ''s/æ/ae/g;s/ø/oe/g;s/å/aa/g;s/Æ/Ae/g;s/Ø/Oe/g;s/Å/Aa/g''
Esto podría funcionar para usted (GNU sed):
sed -r ''s/$//næaeøoeåaaÆAeØOeÅAa/;:a;s/([æøåÆØÅ])(.*/n.*/1(..))//3/2/;ta;s//n.*//'' file
Funciona mediante la adición de una tabla de búsqueda al final de la línea, en bucle hasta que se reemplacen todas las claves y luego se elimina la tabla de búsqueda.