Zeilenlänge oder Zeichen pro Zeile bestimmen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
naibed
Beiträge: 68
Registriert: 14.04.2004 00:00:17
Wohnort: bei root und localhorst ;-)

Zeilenlänge oder Zeichen pro Zeile bestimmen

Beitrag von naibed » 26.04.2006 21:30:32

Hallo liebe Debiangemeinde,
ich muss heute mal Eure Hilfe in Anspruch nehmen ;-)

Wie kann ich die Anzahl der Zeichen in einer Zeile bestimmen?
Anschließend wird dann in Abhängigkeit des Ergebnisses folgedens ausgeführt:

Code: Alles auswählen

 sed 's/\ /\    /g' new6.txt > new7.txt
Die Menge der Leerzeichen ist dann abhängig von der Größe der jeweiligen Zeile.
Da ich hier einige *.txt Dateien habe, welche im 1,4MB Bereich liegen, kommt nur eine solche,
oder elegantere Lösung zum tragen ;-)

PS Hier noch ein kleiner Ausschnitt aus der Quelldatei und wie es dann aussehen sollte.

Code: Alles auswählen

9057903 242,22
9057909 1,93
9057952 30,63
9057961 10,59
9057976 48,19
9057996 70,61
9059041 34,45
9059054 1,63

Code: Alles auswählen

380686 9265,67
380687 3385,84
380688 4601,76
405073  333,13
405086    1,85
Danke und Gruß
Matt

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 26.04.2006 21:43:36

etwa so ?

Code: Alles auswählen

root@gms1:~# cat x.txt
9057903 242,22
9057909 1,93
9057952 30,63
9057961 10,59
9057976 48,19
9057996 70,61
9059041 34,45
9059054 1,63
root@gms1:~# perl -pe '$i=" "x(30-length($_));s/ / $i/;' x.txt
9057903                242,22
9057909                  1,93
9057952                 30,63
9057961                 10,59
9057976                 48,19
9057996                 70,61
9059041                 34,45
9059054                  1,63
Gruß
gms

Benutzeravatar
naibed
Beiträge: 68
Registriert: 14.04.2004 00:00:17
Wohnort: bei root und localhorst ;-)

Beitrag von naibed » 26.04.2006 22:06:56

Hallo gms,

ja genau so :-)

Kannst du kurz auf die Syntax eingehen?

Vielen Dank
Matt

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 26.04.2006 22:21:11

naibed hat geschrieben:Kannst du kurz auf die Syntax eingehen?
Hm, das Dokumentieren ist schwerer als Coden :)

Die Perl Optionen:
-p ... öffnet alle angegebenen Dateien und führt für jede Zeile den Code aus
-i ... (optional) damit könntest du die Datei auch "in place" editieren
-e ... danach folgt der Code der pro Zeile ausgeführt wird

Der Code beinhaltet zwei Statements

Code: Alles auswählen

# 1. Statement:
# dieses Statement erstellt eine Zeichenkette von Blanks mit der Länge 30 weniger der aktuellen Länge der Zeile; "$_" ist die Variable, welche die Zeile beinhaltet
$i=" "x(30-length($_)"
und

Code: Alles auswählen

# 2.Statement
# das kennst du ja von sed
s/ / $i/
Gruß
gms

[edit]
bei der "-p" Option habe ich noch vergessen, daß die Zeile, nach dem der Codeabschnitt beendet wurde, automatisch ausgegeben wird
[/edit]

Antworten