Supprimer les codes d’échappement ANSI des journaux
Les sorties de terminal contiennent souvent des séquences de contrôle ANSI invisibles qui ajoutent couleurs, gras, déplacements du curseur, titres de fenêtre et autres effets d’affichage.
Lancer gratuitement
Utiles dans un shell interactif, ces instructions deviennent gênantes lorsque vous copiez des journaux dans des tickets, rapports, index de recherche ou jeux de données. Cet outil retire les codes ANSI de couleur et de mise en forme tout en conservant le message, les espaces et les sauts de ligne. Collez la sortie pour la nettoyer dans votre navigateur ou utilisez l’API dans un traitement automatisé.
Transformez une sortie de terminal stylisée en texte exploitable
Les programmes en ligne de commande détectent fréquemment le terminal et enrichissent leur sortie avec des couleurs, des mises en évidence, des commandes de curseur, des hyperliens ou des instructions de titre. L’écran interprète ces octets : vous voyez donc un état lisible plutôt que la syntaxe de contrôle sous-jacente. Les difficultés commencent lorsque cette sortie est redirigée, copiée depuis un système de compilation, enregistrée dans une base ou collée dans une demande d’assistance. Les séquences d’échappement peuvent apparaître sous forme de fragments entre crochets, perturber les recherches, alourdir les différences et rendre les traitements automatiques peu fiables. Cet outil parcourt le texte, écarte les séquences ANSI reconnues et conserve les caractères Unicode ordinaires, les espaces et les lignes. Il traite les couleurs SGR, les commandes CSI, les chaînes OSC et les contrôles associés. Le résultat peut être lu, copié, indexé, comparé ou transmis à un analyseur sans instructions d’affichage parasites.
Traitement déterministe des séquences d’échappement
Le nettoyeur lit le texte une seule fois, du début à la fin. Lorsqu’il rencontre un introducteur ESC ou un contrôle C1 équivalent sur un octet, il vérifie les plages prévues par la syntaxe de contrôle des terminaux et consomme la séquence complète. Les commandes CSI sont reconnues grâce à leurs octets de paramètres, intermédiaires et finaux. Cette méthode couvre changements de couleur, réinitialisations, effacements de ligne et déplacements du curseur sans maintenir une liste fragile de commandes. Les contrôles de chaîne OSC, DCS, SOS, PM et APC sont supprimés jusqu’à BEL ou au terminateur de chaîne ; sans terminateur, le reste de l’entrée appartient au contrôle. Le texte ordinaire est reproduit exactement, notamment les émojis, écritures non latines, tabulations, retours chariot et sauts de ligne. La réponse indique le nombre de séquences retirées et si le texte a changé. Aucun terminal n’est émulé : les instructions disparaissent sans réorganiser les caractères visibles.
Employez la sortie nettoyée dans vos journaux et automatisations
Utilisez cette capacité juste après avoir capturé la sortie d’un processus susceptible d’imposer des couleurs ou une mise en forme, surtout si vous ne pouvez pas lui demander du texte brut. La valeur nettoyée peut alimenter un agrégateur de journaux, un index plein texte, un rapport d’incident, un test d’instantané, une notification ou une extraction structurée. L’algorithme étant déterministe, une entrée identique produit toujours la même sortie, ce qui convient aux artefacts de compilation et aux comparaisons de régression. Il n’effectue aucune requête réseau, n’exécute pas le texte reçu et n’interprète pas les commandes shell qu’il contient. La suppression d’ANSI est une normalisation, pas une protection universelle : HTML, SQL, CSV et le shell exigent chacun leur propre échappement. Les retours chariot et espaces arrière ordinaires sont conservés. Pour reconstruire la position du curseur, passez d’abord par un émulateur. Pour les journaux colorés usuels, ce nettoyage préserve l’information et retire le bruit visuel.
Cas d’usage
Nettoyer les journaux d’intégration continue
Retirez couleurs et commandes de curseur avant de joindre une compilation à un ticket, un rapport ou une archive consultable.
Stabiliser les comparaisons d’instantanés
Normalisez la sortie décorée afin que les tests comparent le message et non un style de terminal variable selon l’environnement.
Préparer les journaux au traitement de texte
Fournissez un texte lisible aux recherches, classements, analyses ou alertes sans instructions ANSI dans les champs et jetons.
Questions fréquentes
Que supprime cet outil ?
Il retire les séquences d’échappement ANSI employées pour les couleurs, attributs de texte, commandes de curseur, instructions de terminal, hyperliens et chaînes de contrôle.
Conserve-t-il les sauts de ligne et le texte Unicode ?
Oui. Les caractères ordinaires, dont Unicode, les tabulations, retours chariot et sauts de ligne restent dans leur ordre initial.
Le déplacement du curseur est-il rendu avant le nettoyage ?
Non. L’outil supprime les instructions du terminal, mais n’émule aucun écran et ne réorganise pas les caractères selon le curseur.
Que devient une chaîne OSC ou un autre contrôle non terminé ?
La séquence et tout ce qui suit son introducteur sont retirés, car le contenu restant ne peut pas être distingué sûrement de sa charge.
Puis-je employer directement le résultat comme HTML ou commande shell ?
Ne le supposez pas. La suppression d’ANSI ne remplace ni l’échappement ni la validation propres à la destination.
Combien coûte une requête API ?
Chaque requête API coûte $0.002. Le même nettoyeur déterministe peut aussi fonctionner dans votre navigateur.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/str/remove-ansi \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"}'const res = await fetch("https://api.kit.forhosting.com/str/remove-ansi", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/remove-ansi",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/remove-ansi", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"\\u001b[32mBuild passed\\u001b[0m\\n\\u001b[1;33m2 warnings\\u001b[0m"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/remove-ansi", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.remove_ansi",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |