Ich muss das Ergebnis eines grep-Befehls in einer Datei speichern, möchte aber auch, dass die Ausgabedatei formatiert wird und die Farben wie im Terminal bleiben.
Gibt es eine Möglichkeit, das zu tun? Vielleicht grep in eine Art Auszeichnungssprache speichern? Wenn dies nicht möglich ist, gibt es ein anderes Tool, das diese Aufgabe ausführen kann?
Ich versuche, das Suchwort in der Ausgabedatei hervorzuheben, genau wie im Terminal.
pygmentize
mit vielen anderen funktioniert.Je nachdem, was Sie mit der Ausgabedatei tun möchten, können Sie einer normalen Textdatei Farben hinzufügen, da die Farben einfach aus einigen Sonderzeichen stammen. Grep scheint sie nicht drucken zu wollen, wenn Sie sie in eine Datei umleiten, daher müssen Sie sie erzwingen:
Wenn Sie nun die Datei auf die Konsole drucken, wird sie mit den Farben gedruckt, da Bash diese Zeichen als "Diese Farbe verwenden" interpretiert.
Wenn Sie es jedoch in einem Editor wie öffnen
vim
, erhalten Sie einige seltsame Zeichen. Zum Beispiel, wenn ich die Befehle verwendeDie Ausgabe sieht richtig aus, wenn ich sie drucke,
cat
aber wenn ich sie öffne,vim
erhalte ichWenn Sie also einen Editor verwenden möchten, ist dies wahrscheinlich nicht das, was Sie möchten.
quelle
Wenn ich es richtig verstanden habe, möchten Sie eine Terminalausgabe in einer Textdatei speichern, oder? Aber Sie möchten, dass es mit Farben formatiert wird. Wenn das der Fall ist, sind hier meine Ideen:
Ausgabe automatisch markieren
Wie Sie wahrscheinlich wissen, kann eine Grep-Ausgabe nicht formatiert werden, da es sich um eine Textdatei handelt. Soweit ich weiß, können Sie das also nicht auf einfache Weise tun.
Trotzdem gibt es eine einfache Problemumgehung, die darin besteht, Ihrem Texteditor klar zu machen, welche Art von Datei geöffnet wird. Nehmen wir zum Beispiel an, Ihre grep-Ausgabe enthält einige bash-Komponenten, sodass die bash-Hervorhebungen für Sie funktionieren (dies sind übrigens oft die Farben, die Sie in einer farbigen Ausgabe im Terminal sehen). Der Trick besteht also darin, die Textausgabe in einer Datei mit der richtigen Erweiterung zu speichern. Anstatt etwas zu tun wie:
Sie können für gehen
Dadurch erkennt gedit (oder ein beliebiger anständiger Texteditor) automatisch, dass es sich um Bash-Code handelt, und hebt ihn entsprechend hervor. Sie brauchen die Ausgabe nicht einzufärben, das Programm erledigt dies für Sie, wenn es den Typ des Codes erkennt, den es öffnet. Wenn Sie mit anderen Formaten arbeiten, passen Sie die Erweiterung einfach an das an, auf das Sie zugreifen möchten (z. B.> output.xml,> output.html,> output.py ... etc). Viel Glück! :)
Hervorheben einiger Wörter in der Ausgabedatei
Wenn ich es verstanden habe, möchten Sie die gesuchten Wörter hervorheben. Auch dies ist in einer Nur-Text-Datei nicht möglich, nur weil es sich um einen Nur-Text handelt. Sie können jedoch auf sehr einfache Weise ein Format hinzufügen, z. B. mit HTML-Codierung. Dadurch wird Ihre Ausgabe in einen HTML-Code umgewandelt. Wenn Sie ihn mit einem Programm öffnen, das HTML interpretieren kann (libreoffice writer, firefox und 10000 usw.), werden einige Wörter hervorgehoben.
Nehmen wir dazu an, dies ist Ihr grep, das nach html exportiert wurde:
Und jetzt möchten Sie den Schlüsseltext in Ihrer Ausgabe hervorheben . Sie können sed verwenden , um es zu tun, wie:
Und violà, jetzt ist dein Schlüsseltext rot hervorgehoben.
quelle