Speichern Sie die Befehlszeilenausgabe in einer Datei ohne Grafiken oder Sonderzeichen

Ich möchte die Ausgabedaten der Befehlszeile in einer Textdatei speichern. Ich verwende macOS High Sierra 10.13.6. Das Problem ist, dass es einige grafische Ausgaben hat, die ich nicht speichern möchte. Was ich brauche, sind nur die Zeichenfolgen und ihre entsprechenden Werte. Kannst du mir bitte helfen?

Der Shell-Befehl, den ich ausführe, lautet:

pwmetrics http://www.cnn.com --runs=1

Und die im Terminal angezeigte Ausgabe lautet:

Geben Sie hier die Bildbeschreibung ein

Dieses Tool zum Generieren von Webseitenleistungsmetriken ist Open Source. Hier ist der Fehler, den ich bekomme, während ich versuche, meinen Code zu speichern:

der Fehler

Und die o.txtDatei enthält nichts.

Die Shell-Befehle, die ich bisher ausprobiert habe, sind:

pwmetrics http://www.ieee.org --runs=2 &> /Users/ssr/Desktop/o.txt
pwmetrics http://www.ieee.org 2>/dev/null | tee /Users/ssr/Desktop/o.txt
pwmetrics http://www.ieee.org yes>/dev/null | tee /Users/ssr/Desktop/o.txt
Tolle Frage. Da es sich um Open Source handelt, gibt es einfache Möglichkeiten, herauszufinden, ob es sich um ANSI-Escape-Sequenzen handelt, und einige Optionen, um sie zu löschen. Hoffentlich gibt Ihnen meine Antwort eine Richtung oder Ideen zum Ausprobieren. Vor allem das schnelle set term dumbund einmalige erneute Ausführen des Befehls.

Antworten (1)

Mit diesem Tool haben Sie mehrere Möglichkeiten.

  1. JSON ausgeben und analysieren
  2. Laden Sie den benötigten Text in Google Sheets hoch und exportieren Sie ihn als CSV
  3. Verwenden Sie ein Tool, um die ANSI-Escape-Codes zu entfernen, die (nach Meinung einiger) den Text verschönern und färben - ein Paket zum Entfernen von ANSI ist https://github.com/chalk/strip-ansi
  4. Verwenden Sie andere Tools, um diese zu entfernen, indem Sie die Ausgabe weiterleiten oder in einer Datei speichern - https://unix.stackexchange.com/questions/4527/program-that-passes-stdin-to-stdout-with-color-codes- entfernt oder https://superuser.com/questions/380772/removing-ansi-color-codes-from-text-stream
  5. Versuchen Sie, Ihren Terminaltyp auf TERM=dumb zu setzen (wie Can't plot with gnuplot on my Mac )
  6. Forken dieses Projekts und Ändern des Codes, sodass die ANSI-Escape-Werte nichts sind. (Zeilen 4-8 hier https://github.com/paulirish/pwmetrics/blob/master/lib/utils/messages.ts oder vielleicht ein paar Zeilen weiter unten, wo diese Variablen zum Erstellen der Ausgabe verwendet werden)

Ich würde das Programm auch anweisen, Ihre Ausgabedatei zu schreiben, damit Sie eine klarere Ansicht erhalten, ohne die Dateibehandlung und Pipes in Bash debuggen zu müssen (vorausgesetzt, das ist heute nicht Ihre Stärke).

Vielen Dank @bmike, es war eine hilfreiche Erklärung!