2012-03-29 10 views
2

ich ein Format wie folgt definiert sind:Senden Perl formatierte Ausgabe auf weniger

# header format 
format STDOUT_TOP = 
pid ppid start_addr uid gid state  vsz rss  name 
-------------------------------------------------------------------------- 
. 

# data format 
format STDOUT = 
@>>> @>>> @>>>>>>>>>> @>>> @>>> @>>> @>>>>> @>>> @<<<<<<<<<<<<<<<<<<< 
$pid, $ppid, $h_next,  $uid, $gid, $state, $vm, $rss, $name 
. 

Wenn ich schreibe, rufen Sie alles super funktioniert, wenn ich zu STDOUT bin Druck, aber ich bin eine große Datenmenge verarbeiten und es dauert mehr als anzuzeigende Seite; der ideale Weg für mich oder jemand anderen, um es zu untersuchen, wäre mit weniger. Wenn ich die Ausgabe meines Programms auf weniger pipe, wird ein ^L Zeichen vor der Kopfzeile bei jeder neuen Seite der Ausgabe gedruckt.

Screenshot: output of my program piped to less

Gibt es eine Möglichkeit, um dieses? Wenn dieses Zeichen gedruckt wird, ist meine Kopfzeile falsch mit meinen Daten ausgerichtet.

Jede Hilfe wäre willkommen.

+0

Sie können einer speziellen Variablen '$ =' einen großen Wert zuweisen, um anzuzeigen, dass Ihre Seite eine große Anzahl von Zeilen enthält. Aber Sie werden Kopfzeilen am Anfang jeder Seite in Ihrer Ausgabe verlieren, weil es nur eine Seite geben wird – mcsi

+0

Ich würde nur den Formular-Feed ignorieren und mit dem Leben weitermachen. –

+0

@briandfoy Das wäre nett, wenn ich das hier umdrehen wollte, dann für falsch ausgerichtete Formatierung abgemeldet werden. –

Antwort

5

Das ist ein ASCII-Formfeed. Es wird wahrscheinlich in beiden Fällen gedruckt, aber less ist eigentlich Anzeige es. Gemäß perlform und perlvar gibt Perl den Inhalt von $^L (oder $FORMAT_FORMFEED unter use English) aus. Versuchen Sie, diese Variable auf die leere Zeichenfolge oder eine neue Zeile zu setzen.

+0

Danke, das hat perfekt funktioniert. –

Verwandte Themen