GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi sed échoue-t-il avec les caractères internationaux et comment y remédier ?

sed n'est pas très bien configuré pour le texte non-ASCII. Cependant vous pouvez utiliser (presque) le même code en perl et obtenez le résultat souhaité :

perl -pe 's/.*\| //' x

Je pense que l'erreur se produit si l'encodage d'entrée du fichier est différent de l'encodage préféré de votre environnement.

Exemple :in est UTF-8

$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Y
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X 
Y

UTF-8 peut être interprété en toute sécurité comme ISO-8859-1, vous obtiendrez des caractères étranges mais à part cela, tout va bien.

Exemple :in est ISO-8859-1

$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Gras Och Stenar Trad - From MöY
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X 
Y

ISO-8859-1 ne peut pas être interprété comme UTF-8, le décodage du fichier d'entrée échoue. La correspondance étrange est probablement due au fait que sed essaie de récupérer plutôt que d'échouer complètement.

La réponse est basée sur Debian Lenny/Sid et sed 4.1.5.


Linux
  1. Comment utiliser sed pour modifier mes fichiers de configuration, avec des clés et des valeurs flexibles ?

  2. Comment remplacer plusieurs espaces par un onglet

  3. Comment désactiver Gnome pour créer des documents/vidéo/dans HOME ?

  4. Comment remplacer récursivement les caractères par sed ?

  5. Comment configurer ssh sans mot de passe avec des clés RSA

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

Ssh - Pourquoi la tentative de transfert X11 échoue-t-elle avec "connect /tmp/.x11-unix/x0 :aucun fichier ou répertoire de ce type" ?

Pourquoi /bin/sh pointe-t-il vers /bin/dash et non /bin/bash ? ?

Qu'est-ce que la commande Grep sous Linux ? Pourquoi est-il utilisé et comment fonctionne-t-il ?

Comment renommer tous les fichiers avec des caractères spéciaux et des espaces dans un répertoire ?

Pourquoi le montage lié d'un fichier après la suppression du lien échoue-t-il avec ENOENT ?