Rimuova i codici di escape ANSI da testo e log
L’output del terminale contiene spesso sequenze di controllo ANSI invisibili che aggiungono colori, grassetto, spostamenti del cursore, titoli delle finestre e altri effetti grafici.
Esegui gratis nel browser
Queste istruzioni sono utili in una shell interattiva, ma diventano caratteri fastidiosi quando i log vengono copiati in ticket, rapporti, indici di ricerca o set di dati. Questo strumento elimina i codici ANSI di colore e formattazione conservando il messaggio, gli spazi e le interruzioni di riga. Incolli l’output per pulirlo nel browser oppure lo invii tramite API in un flusso automatizzato.
Trasformi l’output formattato del terminale in testo utile
I programmi da riga di comando rilevano spesso il terminale e arricchiscono l’output con colori, enfasi, controlli del cursore, collegamenti o istruzioni per il titolo. Lo schermo interpreta questi byte, quindi Lei vede un messaggio ordinato anziché la sintassi di controllo sottostante. I problemi emergono quando lo stesso output viene reindirizzato, copiato da un sistema di build, salvato in un database o incollato in una richiesta di assistenza. Le sequenze di escape possono apparire come frammenti tra parentesi, ostacolare le ricerche, ingrandire i diff e rendere inaffidabile l’elaborazione automatica. Questo strumento esamina il testo e scarta le sequenze ANSI riconosciute, conservando caratteri Unicode, spazi e struttura delle righe. Gestisce colori SGR, comandi CSI, stringhe OSC e altri controlli correlati. Il risultato può essere letto, copiato, indicizzato, confrontato o passato a un parser senza istruzioni grafiche mischiate al contenuto.
Come lo scanner deterministico tratta le sequenze di escape
Il pulitore legge il testo una sola volta dall’inizio alla fine. Quando incontra un introduttore ESC o un controllo C1 equivalente a byte singolo, verifica gli intervalli definiti dalla sintassi di controllo del terminale e consuma la sequenza completa. I comandi CSI vengono riconosciuti attraverso i byte di parametro, intermedi e finali: ciò copre cambi di colore, ripristini, cancellazioni di riga e spostamenti del cursore senza una fragile lista di singoli comandi. I controlli di stringa OSC, DCS, SOS, PM e APC vengono eliminati fino a BEL o al terminatore di stringa; se questo manca, il resto dell’input viene considerato parte del controllo. Il testo ordinario viene copiato esattamente, compresi emoji, scritture non latine, tabulazioni, ritorni a capo e nuove righe. La risposta indica quante sequenze sono state rimosse e se è avvenuta una modifica. Non viene emulato un terminale: le istruzioni spariscono, ma i caratteri visibili non vengono riordinati.
Usi l’output pulito in sicurezza nei log e nelle automazioni
Usi questa capacità subito dopo aver acquisito l’output di un processo che può imporre colori o formattazione, soprattutto se non può configurarlo affinché produca testo semplice. Il valore pulito può confluire in un aggregatore di log, indice testuale, rapporto di incidente, test snapshot, notifica o fase di estrazione strutturata. Poiché l’algoritmo è deterministico, input identici producono sempre output identici, caratteristica importante per artefatti di build e confronti di regressione. Non effettua richieste di rete, non esegue il testo ricevuto e non interpreta eventuali comandi shell. La rimozione di ANSI è una normalizzazione, non una protezione valida per ogni destinazione: HTML, SQL, CSV e shell richiedono escaping specifico. I normali ritorni a capo e backspace vengono conservati. Se deve ricostruire la posizione del cursore, usi prima un emulatore. Nei comuni log colorati, questa pulizia mantiene le informazioni e rimuove il rumore grafico.
Casi d'uso
Pulire i log di integrazione continua
Rimuova colori e comandi del cursore prima di allegare l’output di build a un ticket, rapporto o archivio ricercabile.
Stabilizzare i confronti snapshot
Normalizzi l’output decorato affinché i test confrontino il messaggio e non lo stile del terminale dipendente dall’ambiente.
Preparare i log per l’elaborazione testuale
Invii testo leggibile a ricerca, classificazione, parsing o avvisi senza istruzioni ANSI che contaminino token e campi.
Domande frequenti
Che cosa rimuove lo strumento?
Rimuove le sequenze di escape ANSI usate per colori, attributi del testo, controlli del cursore, comandi del terminale, collegamenti e stringhe di controllo.
Conserva le interruzioni di riga e il testo Unicode?
Sì. I caratteri ordinari, incluso Unicode, le tabulazioni, i ritorni a capo e le nuove righe restano nell’ordine originale.
Il movimento del cursore viene riprodotto prima della pulizia?
No. Lo strumento elimina le istruzioni del terminale, ma non emula uno schermo né riordina i caratteri in base al cursore.
Che cosa accade a una stringa OSC o a un controllo non terminato?
La sequenza e tutto ciò che segue l’introduttore vengono rimossi, perché il contenuto residuo non è distinguibile in sicurezza dal carico.
Posso usare il risultato direttamente come HTML o comando shell?
Non lo dia per scontato. Rimuovere ANSI non sostituisce l’escaping o la convalida richiesti dalla destinazione.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo stesso pulitore deterministico può funzionare anche nel Suo browser.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text": "\u001b[32mBuild passed\u001b[0m\n\u001b[1;33m2 warnings\u001b[0m"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.remove_ansi",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |