Por ejemplo:
sed 's/\u0091//g' file1
En este momento, tengo que hacer hexdumppara obtener el número hexadecimal y ponerlo de la sedsiguiente manera:
$ echo -ne '\u9991' | hexdump -C
00000000 e9 a6 91 |...|
00000003
Y entonces:
$ sed 's/\xe9\xa6\x91//g' file1

echo 馑 | sed s/...//imprime algo?sedtiene el modificador g, reemplaza todas las ocurrencias también cuando se siguen. También sed debe contarlo como un personaje, ver:echo -ne "馑" | wc -mda1. Si cuenta los bytes (wc -c), volvería3. ¿Entendí tu pregunta correctamente?.significa "un carácter" o "un byte"?echo 馑 | sed s/...//me da馑(nada se reemplaza)en_US.UTF-8, pero no debajoC.Perl puede hacer eso:
-CSenciende UTF-8 para entrada, salida y error estándar.fuente
Una serie de versiones de
sedsoporte Unicode :No pude encontrar información sobre BSD sed, lo que me pareció extraño, pero creo que hay muchas posibilidades de que también sea compatible con Unicode. Desafortunadamente, no hay una forma estándar de saber
sedqué codificación usar, por lo que cada uno lo hace a su manera.fuente
Esto funciona para mi:
Es una gota más detallada de lo que me gustaría; Aquí hay una explicación completa:
-ndeshabilitar el archivo de intercambio vim-EEx modo mejorado-sModo silencioso+'%s/\%u9991//g'ejecutar el comando de sustitución+wqguardar y Salirfuente
file1en el lugar , ¿es correcto?Con versiones recientes de BASH, solo omita las comillas alrededor de la expresión sed y puede usar las cadenas escapadas de BASH. Los espacios dentro de la expresión sed o partes de la expresión sed que BASH podría interpretar como comodines se pueden citar individualmente.
fuente
Funciona para mí con GNU sed (versión 4.2.1):
(Como otro reemplazo para
sedusted también podría usar GNUawk; pero no parece necesario).fuente