Stdin Zeilenlänge abschneiden?

7

Ich habe einige Protokolldateien analysiert und festgestellt, dass einige der Zeilen zu lang sind, um in einer Zeile angezeigt zu werden, sodass Terminal.app sie in die nächste Zeile einfügt. Ich habe jedoch nach einer Möglichkeit gesucht, eine Zeile nach einer bestimmten Anzahl von Zeichen abzuschneiden, so dass Terminal nicht umgebrochen wird, was das Erkennen von Mustern erleichtert.

Ich habe ein kleines Perl-Skript dafür geschrieben:

%Vor%

Aber ich habe das Gefühl, dass diese Funktionalität wahrscheinlich in einige andere Werkzeuge eingebaut ist (sed?), von denen ich einfach nicht genug weiß, um sie für diese Aufgabe zu verwenden.

Also meine Frage eine Art umgekehrte Frage: Wie trenne ich eine Zeile von stdin OHNE ein Programm zu schreiben, um es zu tun?

    
Kyle Cronin 26.09.2008, 01:49
quelle

9 Antworten

12

Rohrausgabe an:

%Vor%

Wo LIMIT die gewünschte Linienbreite ist.

    
Andrew Medico 26.09.2008, 01:50
quelle
11

Eine andere Taktik, mit der ich Protokolldateien mit sehr langen Zeilen anzeigen kann, besteht darin, die Datei nach "weniger -S" zu leiten. Die Option -S für weniger Zeilen druckt Zeilen ohne Umbruch, und Sie können den verborgenen Teil von langen Zeilen anzeigen, indem Sie die rechte Pfeiltaste drücken.

    
Andrew Medico 26.09.2008 01:53
quelle
2

Beantworten Sie die Frage nicht genau, aber wenn Sie bei Perl bleiben und einen Einzeiler verwenden möchten, ist eine Möglichkeit:

%Vor%

wobei 25 die gewünschte Zeilenlänge ist.

    
Yanick 26.09.2008 03:42
quelle
0

Der übliche Weg dazu wäre

%Vor%

Golf (für 5.10):

%Vor%

(Denken Sie nicht daran, dass es sich um eine Programmierung handelt, denken Sie daran, dass Sie ein Befehlszeilen-Tool mit einer großen Anzahl von Optionen verwenden.) (Ja, das Python Verweis ist beabsichtigt.)

    
ysth 26.09.2008 07:46
quelle
0

Eine Korn-Shell-Lösung (auf 70 Zeichen verkürzt - aber leicht zu parametrisieren):

%Vor%     
runrig 26.09.2008 18:24
quelle
0

Sie können eine gebundene Variable verwenden, die ihren Inhalt auf eine feste Länge begrenzt:

%Vor%     
dland 26.09.2008 21:29
quelle
0

Das ist nicht genau das, wonach Sie fragen, aber GNU-Bildschirm (in OS X enthalten, wenn Ich erinnere mich richtig, und üblich auf anderen * nix-Systemen) können Sie Zeilenumbruch ein- / ausschalten (Ca r und Ca Cr). Auf diese Weise können Sie einfach die Größe Ihres Terminals ändern, anstatt die Daten durch ein Skript zu leiten.

Bildschirm gibt Ihnen im Grunde "virtuelle" Terminals innerhalb einer Toplevel-Terminal-Anwendung.

    
Sam Martin 26.09.2008 21:54
quelle
0
%Vor%     
aaaaaa 11.05.2009 14:22
quelle
0

Wenn ich den Punkt nicht verpasse, ist der Befehl "fold" von UNIX genau das:

%Vor%     
Ed Morton 15.10.2012 16:17
quelle

Tags und Links