Je veux remplacer \ n par un caractère.
echo -n "s\n" |tr "\n" "a"
s\n
Pourquoi ne peut pas obtenir sa comme résultat?
De man echo
:
-e
permettre l'interprétation des échappements antislash
Votre écho peut être un shell intégré (essayez type echo
). Si oui, utilisez help echo
plutôt que man echo
. Mais il devrait en être de même pour l' -e
option.
Sans cette option, la \n
chaîne est imprimée littéralement et non comme un saut de ligne. Avis tr
n'a pas besoin d'option spéciale pour fonctionner comme prévu.
Commande fixe:
echo -ne "s\n" | tr "\n" "a"
Un autre utilisateur, Gordon Davisson, a souligné certaines choses. Ils semblent assez importants pour les inclure dans ma réponse pour référence future. À partir de ce moment, tout le mérite revient à Gordon .
Les différentes versions de
echo
sont très incompatibles en ce qui concerne les échappées et les options. Certains interpréteront des séquences d'échappement sans-e
. Certains vont imprimer "-e" dans leur sortie. Certains font… d'autres choses. Pour des choses comme ça, utilisezprintf
plutôt (comme dansprintf "s\n"
). Voir les spécifications POSIX pourecho
, en particulier la section "utilisation de l'application".
echo
sont très inconsistantes en ce qui concerne les échappements et les options. Certains interpréteront des séquences d'échappement sans-e
. Certains vont imprimer "-e" dans leur sortie. Certains font… d'autres choses. Pour des choses comme ça, utilisezprintf
plutôt (comme dansprintf "s\n"
). Voir les spécifications POSIX pourecho
, en particulier la section "utilisation de l'application".