PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pipe-Kmd - Druckaufbereitung


instinct
2007-01-28, 19:21:29
Hallo Leute, hab folgendes Problem:
Ich soll eine Datei so Druckaufbereiten, dass sie folgende Kriterien erfüllt:
Eine Zeile darf nicht mehr, als 128Zeichen enthalten und die Zeilen sollen numeriert sein. Wenn eine Zeile länger als 128Zeichen ist soll sie gesplittet werden, allerdings darf der zweite Teil der Splittung nicht numeriert sein:

1. keine 128 Zeichen in einer Zeile
2. hier sind mehr als 128 Zeichen
in einer Zeile
3. usw
4. usw

Ich habe keine Ahnung wie ich da rangehn soll. Bitte um Hilfe :D

piepre
2007-01-28, 20:13:32
Es müsste mit awk gehen, da ich mich damit aber nicht auskenne, hier ein kleines (nicht besonders schönes) Perlscript.
#!/usr/bin/perl
use strict;

my $file='/tmp/test.txt';
my $i=0;
my $ll=128; #line length
my $j=0;
my $f='';

open(FILE,$file);
while($f=<FILE>)
{
$f =~ s/\s+$//;
for($j=0;$j<length($f);$j+=$ll)
{
print $i.": ".substr($f,$j,$ll)."\n";
}
$i++;
}

piepre
2007-01-28, 20:31:27
Hab mir gerade nochmal awk ein bisschen angeguckt und nebenbei auf fold gestoßen. Soll die Numerierung der Zeile mitgezählt werden? Wenn ja, würde folgender Befehl ausreichen:
awk '{ i += 1; print i": "$0 }' test.txt | fold -w 128

instinct
2007-01-28, 21:15:51
hm werd ich ma ausprobieren, danke fuer deine hilfe

instinct
2007-01-28, 22:21:19
awk '{print NR" "$0}' test | fold -w 128 | lp -d DRUCKER

so funtkionierts :)