Ich habe eine aus Excel 2003 importierte Textdatei im folgenden Grundformat.
43038 12500 s.ramesh labour
43038 13000 m.ramesh doctor
Ich muss diese Datei so anordnen, dass Spalte 1 die Zahlen 1-5 enthält.
Das Problem besteht darin, dass die Spalten 2, 3 und 4 nicht in der bestimmten Reihenfolge angeordnet sind.
Ich möchte diese Datei in einer solchen Reihenfolge, dass
- Spalte 2 der gesamten Datei sollte an der Stelle 15-19 stehen
- Spalte 3 sollte in 49-65 sein
- Spalte 4 sollte an der 75.-95. Stelle stehen
Die Datei hat 100.000 Zeilen und 4 Spalten, bitte.
Ich suche Rat, ob sort, vi oder ein anderer Editor bzw. eine andere Shell hilfreich wäre, da ich dies täglich für etwa 100 Dateien machen muss.
Antwort1
Eine Skriptsprache wie Perl ist hierfür ideal.
$ cat t2
5 2 r.gritty teaboy
43038 12500 s.ramesh labour
43038 13000 m.ramesh doctor
$ perl -ane 'printf("%5s %5s\n", $F[2],$F[1])' t2
r.gritty 2
s.ramesh 12500
m.ramesh 13000
oder
$ perl -ane 'printf("%5s %0.5d\n", $F[2],$F[1])' t2
r.gritty 00002
s.ramesh 12500
m.ramesh 13000
Anschließend können Sie Hunderte von Dateien auf einmal direkt an Ort und Stelle bearbeiten.
$ perl -i -ane 'printf("%5s %5s\n", $F[2],$F[1])' t1 t2 t3 t4 t5 *.txt foo/t6