newform(1) newform(1)
NAME
newform - Format einer Textdatei ändern (new format)
SYNTAX
newform [option ...] [datei ...]
BESCHREIBUNG
Mit newform können Sie Textdateien oder Text, den newform von der
Standardeingabe liest, neu formatieren.
newform formatiert den Eingabetext zeilenweise entsprechend den ange-
gebenen Optionen. Das Ergebnis schreibt newform auf die Standardaus-
gabe.
OPTIONEN
Keine Option angegeben:
newform schreibt die eingelesenen Zeilen unverändert auf die
Standardausgabe.
Die Optionen müssen einzeln, von anderen Optionen durch Leerzeichen
getrennt, eingegeben werden (siehe BEISPIELE). Die Reihenfolge der
Optionen ist entscheidend für die Wirkungsweise von newform. Die
Optionen werden der Reihe nach abgearbeitet.
Zum Beispiel liefert die Optionenfolge -e15 -l60 ein anderes Ergebnis
als -l60 -e15.
Mit Ausnahme von -s können Sie die Optionen mehrmals angeben.
Die Optionen dürfen auch zwischen oder nach den Dateinamen stehen;
dies hat dieselbe Wirkung, als wenn alle Optionen vor den Dateinamen
stünden.
Alle angegebenen Optionen gelten für alle angegebenen Dateien.
Tabulatorzeichen in Leerzeichen umwandeln
-i[tabspec]
(i - input tab specification) Mit dieser Option können Sie Tabu-
latorzeichen in Leerzeichen umwandeln. Mit Hilfe von tabspec
definieren Sie eine Liste von Tabulatorstopps. newform wandelt
dann jedes Tabulatorzeichen der Eingabezeile in so viele Leerzei-
chen um, daß das darauffolgende Zeichen auf einem Tabulatorstopp
steht (siehe Beispiel 1).
tabspec nicht angegeben:
tabspec hat den Standardwert -8; d. h. newform nimmt Tabulator-
stopps in den Spalten 1, 9, 17, 25 usw. an.
tabspec angegeben:
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
tabspec kann die folgenden Werte annehmen:
-n, -0;
n1,n2,...;
-a, -a2, -c, -c2, -c3, -f, -p, -s, -u;
--, --name.
-n newform nimmt Tabulatorstopps in den Spalten 1, 1+n, 1+2*n,
1+3*n usw. an.
n ist eine ganze Zahl größer gleich 1.
-0 newform erwartet keine Tabulatorzeichen. Enthält die Einga-
bezeile dennoch Tabulatorzeichen, so werden diese Tabulator-
zeichen in je ein Leerzeichen umgewandelt. Die Angabe von
-i-0 liefert also das gleiche Ergebnis wie die Angabe von
-i-1.
n1,n2,...
newform nimmt Tabulatorstopps in den Spalten n1, n2 usw. an.
n1, n2 usw. sind ganze Zahlen größer oder gleich 1. Schrei-
ben Sie vor eine der Zahlen ein Pluszeichen +, wird der
nachfolgende Wert zur zuletzt angegebenen Zahl addiert und
die Summe als neuer Tabulatorstopp eingesetzt. Die Zahlen
müssen in aufsteigender Reihenfolge und durch Kommas
getrennt angegeben werden. Sie können eine oder mehrere,
höchstens aber 40 Zahlen angeben.
-a entspricht der Tabulatorstoppliste 1,10,16,36,72
(für Assembler, anwendbar bei einigen Großrechnern)
-a2 entspricht der Tabulatorstoppliste 1,10,16,40,72
(für Assembler, anwendbar bei einigen Großrechnern)
-c entspricht der Tabulatorstoppliste 1,8,12,16,20,55
(für COBOL, normales Format)
-c2 entspricht der Tabulatorstoppliste 1,6,10,14,49
(für COBOL, kompaktes Format)
-c3 entspricht der Tabulatorstoppliste
1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
(für COBOL, kompaktes Format, mit mehr Tabulatorstopps als
bei -c2)
-f entspricht der Tabulatorstoppliste 1,7,11,15,19,23
(für FORTRAN)
-p entspricht der Tabulatorstoppliste
1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61
(für PL/1)
-s entspricht der Tabulatorstoppliste 1,10,55
(für SNOBOL)
-u entspricht der Tabulatorstoppliste 1,12,20,44
(für Assembler, anwendbar bei einigen Großrechnern)
-- newform sucht die Tabulatorspezifikation in der ersten
Zeile, die es von der Standardeingabe liest. Die Tabulator-
spezifikation muß das folgende Format haben:
<:ttabspec d:>
--name
newform sucht die Tabulatorspezifikation in der ersten Zeile
der Datei name. Die Tabulatorspezifikation muß das folgende
Format haben:
<:ttabspec d:>
Leerzeichen in Tabulatorzeichen umwandeln
-o[tabspec]
(o - output tab specification) Mit dieser Option können Sie Leer-
zeichen in Tabulatorzeichen umwandeln. Mit Hilfe von tabspec
definieren Sie eine Liste von Tabulatorstopps. Stehen unmittelbar
vor einem dieser Tabulatorstopps ein oder mehrere Leerzeichen,
dann wandelt newform diese Leerzeichenfolge in ein Tabulatorzei-
chen um (siehe Beispiel 2).
tabspec nicht angegeben:
tabspec hat den Standardwert -8; d. h. newform nimmt Tabulator-
stopps in den Spalten 1, 9, 17, 25 usw. an.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
tabspec angegeben:
Für tabspec können Sie die gleichen Werte wie bei Option -i ange-
ben. Geben Sie den Wert -0 an, dann wandelt newform keine Leer-
zeichen in Tabulatorzeichen um.
Tabulatorspezifikation ausgeben
-f (f - format line) newform gibt vor allen anderen Ausgabezeilen
die Tabulatorspezifikation aus.
Die Tabulatorspezifikation hat das folgende Format:
<:ttabspec d:>
Für tabspec gibt newform den Wert aus, den Sie im selben
newform-Aufruf bei der letzten -o-Option angegeben haben. Haben
Sie bei -o keinen Wert angegeben oder haben Sie überhaupt keine
-o-Option angegeben, dann gibt newform für tabspec den Standard-
wert -8 aus.
Vorsicht:
Wenn Sie newform mit der Option -f aufrufen und im selben
Aufruf für die letzte -o-Option -o-- angegeben haben und
wenn Sie vor dieser -o-Option -o-- oder -i-- angegeben
haben, dann gibt newform eine falsche Tabulatorspezifikation
aus.
Beispiel: newform ... -i-- ... -o-- -f datei
Erstes Feld ans Zeilenende setzen
-s (s - shear off) newform schneidet alle Zeichen der Eingabezeile
bis zum ersten Tabulatorzeichen einschließlich ab.
Werden nur 8 Zeichen oder weniger abgeschnitten (das erste Tabu-
latorzeichen nicht mitgezählt), dann werden mit Ausnahme des
ersten Tabulatorzeichens alle abgeschnittenen Zeichen an das Zei-
lenende gesetzt.
Werden mehr als 8 Zeichen abgeschnitten (das erste Tabulatorzei-
chen nicht mitgezählt), dann wird das achte Zeichen durch ein *
ersetzt; die darauffolgenden Zeichen werden gelöscht. Das erste
Tabulatorzeichen wird in jedem Fall gelöscht.
Zusammenwirken mit anderen Optionen:
Wird die Option -s abgearbeitet, dann schneidet newform die Zei-
chen am Beginn der Eingabezeile ab und speichert die abgeschnit-
tenen Zeichen intern, bis alle restlichen Optionen auf die Einga-
bezeile angewandt worden sind. Erst dann setzt newform die Zei-
chen ans Ende der bearbeiteten Zeile.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
Vorsicht:
Wenn Sie die Option -s angeben, dann erwartet newform, daß
alle Eingabezeilen ein Tabulatorzeichen enthalten.
Zeilen kürzen bzw. verlängern
-l[n]
(l - line length) Die effektive Zeilenlänge wird auf n Zeichen
festgelegt. n ist eine ganze Zahl größer gleich 1.
Die Option -l ist nur zusammen mit Option -b, -e, -p oder -a
sinnvoll.
n nicht angegeben:
Die effektive Zeilenlänge wird auf 72 Zeichen festgelegt.
-l[n] nicht angegeben:
Die effektive Zeilenlänge beträgt standardmäßig 80 Zeichen.
Vorsicht:
Tabulator- und Rücksetzzeichen (tabs und backspaces) werden
als jeweils ein Zeichen interpretiert werden; mit der Option
-i können Sie die Tabulatorzeichen jedoch in Leerzeichen
umwandeln.
-b[n]
(b - beginning of the line) Ist die Länge der Eingabezeile größer
als die effektive Zeilenlänge (siehe Option -l), dann kürzt new-
form die Zeile um die ersten n Zeichen.
n ist eine ganze Zahl größer gleich 1.
n nicht angegeben:
newform kürzt die Zeile am Zeilenanfang gerade so weit, daß sie
die effektive Zeilenlänge erreicht.
-e[n]
(e - end of the line) Ist die Länge der Eingabezeile größer als
die effektive Zeilenlänge (siehe Option -l), dann kürzt newform
die Zeile um die letzten n Zeichen.
n ist eine ganze Zahl größer gleich 1.
n nicht angegeben:
newform kürzt die Zeile am Zeilenende gerade so weit, daß sie die
effektive Zeilenlänge erreicht.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
-ck (c - character) Als Füllzeichen wird k definiert. k ist ein
beliebiges druckbares ASCII-Zeichen.
Die Option -c ist nur zusammen mit Option -p oder -a sinnvoll.
-c nicht angegeben:
Standardmäßig ist das Leerzeichen das Füllzeichen.
-p[n]
(p - prefix) Ist die Länge der Eingabezeile kleiner als die
effektive Zeilenlänge (siehe Option -l), dann stellt newform der
Zeile n Füllzeichen (siehe Option -c) voran.
n ist eine ganze Zahl größer gleich 1.
n nicht angegeben:
newform stellt der Eingabezeile gerade so viele Füllzeichen
voran, daß sie die effektive Zeilenlänge erreicht.
-a[n]
(a - append) Ist die Länge der Eingabezeile kleiner als die
effektive Zeilenlänge (siehe Option -l), dann fügt newform am
Zeilenende n Füllzeichen an (siehe Option -c).
n ist eine ganze Zahl größer gleich 1.
n nicht angegeben:
newform fügt am Ende der Eingabezeile gerade so viele Füllzeichen
an, daß sie die effektive Zeilenlänge erreicht.
datei
Name der Textdatei, die neu formatiert werden soll.
Sie können mehrere Dateien angeben. Die angegebenen Optionen gel-
ten dann für alle Dateien.
datei nicht angegeben:
newform liest von der Standardeingabe.
FEHLERMELDUNGEN
Alle hier beschriebenen Fehler führen zum Abbruch.
not -s format
Sie haben newform mit der Option -s aufgerufen, aber eine der Eingabe-
zeilen enthielt kein Tabulatorzeichen.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
can't open datei
Die Eingabedatei datei kann nicht geöffnet werden, da sie nicht exi-
stiert oder Sie auf die Datei nicht zugreifen dürfen usw.
internal line too long
Eine Zeile enthält nach ihrer Erweiterung im internen Arbeitspuffer
mehr als 512 Zeichen.
tabspec in error
Das Argument tabspec, das Sie der Option -i oder -o mitgegeben haben,
hatte nicht das richtige Format.
tabspec indirection illegal
Sie haben newform mit der Option -i--, -o--, -i--datei oder -o--datei
aufgerufen, und die Tabulatorspezifikation, die newform daraufhin von
der Standardeingabe oder aus datei gelesen hat, enthielt wiederum ein
tabspec in Form von -i--, -o--, -i--datei oder -o--datei. Dies ist
nicht zulässig.
BEISPIELE
Tabulatorzeichen in Leerzeichen umwandeln: Option -i
Beispiel 1
Die Datei datei hat folgenden Inhalt:
rot <TAB> gruen
Zwischen den Worten rot und gruen steht nur ein Tabulatorzeichen. Mit
dem Kommando od können Sie den Dateiinhalt überprüfen - od macht auch
das Tabulator- und das Neue-Zeile-Zeichen sichtbar:
$ od -c datei
0000000 r o t \t g r u e n \n
0000012
0000012 gibt oktal die Anzahl der in datei enthaltenen Zeichen an.
Vergleichen Sie die Ausgabe von cat und von newform -i:
$ cat datei
rot gruen
$ newform -i datei
rot gruen
In beiden Fällen beginnt das Wort gruen auf Spalte 9. newform -i läßt
den Dateiinhalt jedoch nur scheinbar unverändert. Das Kommando od
zeigt, daß es das Tabulatorzeichen in 5 Leerzeichen umwandelt:
Seite 7 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
$ newform -i datei | od -c
0000000 r o t g r u e n \n
0000016
Geben Sie der Option -i ein Argument tabspec mit. Beachten Sie: Zwi-
schen -i und dem Wert für tabspec darf kein Leerzeichen stehen.
$ newform -i-4 datei
rot gruen
Hier hat newform einen Tabulatorstopp in Spalte 5 angenommen; folglich
beginnt das Wort gruen auf Spalte 5. Das Tabulatorzeichen wurde in nur
ein einziges Leerzeichen umgewandelt.
Definieren Sie eine Liste von Tabulatorstopps. Dazu legen Sie eine
Datei an, die in einer Zeile mehrere Tabulatorzeichen enthält:
$ cat > datei1
rot <TAB> gruen <TAB> blau <TAB> gelb
<CTRL-D>
$ newform -i5,13,18 datei1
rot gruen blau gelb
Hier hat newform Tabulatorstopps in den Spalten 5, 13 und 18 angenom-
men. Folglich beginnt das Wort gruen auf Spalte 5, d. h. das erste
Tabulatorzeichen wurde in 1 Leerzeichen umgewandelt; das Wort "blau"
beginnt auf Spalte 13, d. h. das zweite Tabulatorzeichen wurde in 3
Leerzeichen umgewandelt usw.
Leerzeichen in Tabulatorzeichen umwandeln: Option -o
Beispiel 2
Die Datei datei hat folgenden Inhalt:
rot gruen
Zwischen den Worten rot und gruen stehen 5 Leerzeichen. Wandeln Sie
die Leerzeichen in ein Tabulatorzeichen um:
$ newform -o datei | od -c
0000000 r o t \t g r u e n \n
0000012
newform hat in Spalte 9 einen Tabulatorstopp angenommen und alle Leer-
zeichen, die unmittelbar vor Spalte 9 standen, in 1 Tabulatorzeichen
umgewandelt.
Seite 8 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
Geben Sie nun für tabspec den Wert -6 an:
$ newform -o-6 datei | od -c
0000000 r o t \t g r u e n \n
0000014
Hier hat newform alle Leerzeichen, die unmittelbar vor Spalte 7 stan-
den, in 1 Tabulatorzeichen umgewandelt. Auf dieses Tabulatorzeichen
folgen die restlichen zwei Leerzeichen.
Zeilen kürzen und verlängern
Beispiel 3
Die Datei datei hat folgenden Inhalt:
montag
dienstag
mittwoch
donnerstag
freitag
samstag
sonntag
Alle Zeilen aus datei, die länger als 6 Zeichen sind, sollen rechts
soweit gekürzt werden, bis sie gerade 6 Zeichen lang sind:
$ newform -l6 -e datei
montag
dienst
mittwo
donner
freita
samsta
sonnta
Alle Zeilen aus datei sollen rechtsbündig formatiert werden; die Zei-
len sollen auf Spalte 20 enden:
$ newform -l20 -p datei
montag
dienstag
mittwoch
donnerstag
freitag
samstag
sonntag
Der folgende newform-Aufruf löscht die Folgenummern aus einem COBOL-
Programm; die Folgenummern stehen in den Spalten 1-6.
Seite 9 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
$ newform -l1 -b6 programm
.
.
.
Die Option -l1 ist notwendig, damit jede Zeile um 6 Zeichen gekürzt
wird (siehe Beispiel 5).
Zeilenabschnitte umordnen: Option -s
Beispiel 4
Die Datei datei hat folgenden Inhalt:
Meier <TAB> Eduard
Mueller <TAB> Hugo
$ cat datei
Meier Eduard
Mueller Hugo
Sie möchten nun die Zeilen so umstrukturieren, daß zuerst der Vorname
kommt und dann, nach einem Leerzeichen, der Nachname.
$ newform -a1 -s datei
Eduard Meier
Hugo Mueller
Zunächst (Option -a1) wurde am Ende der Zeilen ein Leerzeichen ange-
fügt. Anschließend (Option -s) wurden der Nachname und das Tabulator-
zeichen abgeschnitten und der Nachname hinten angefügt.
In diesem Fall hätten Sie auch newform -s -a1 datei eingeben können;
newform hätte dann zuerst Nachnamen und Tabulatorzeichen abgeschnit-
ten, die Nachnamen intern gespeichert, ein Leerzeichen am Zeilenende
angefügt und dann erst die Nachnamen angefügt (siehe Beispiel 6).
Reihenfolge der Optionen und mehrfache Angabe derselben Option
Beispiel 5
Die Datei farben hat folgenden Inhalt:
rot
giftgruen
gelb
lilablassblau
Kürzen Sie alle Zeilen, die länger als 4 Zeichen sind, am Ende um 2
Zeichen:
Seite 10 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
$ newform -l4 -e2 farben
rot
giftgru
gelb
lilablassbl
Vertauschen Sie die beiden Optionen, so erhalten Sie ein anderes
Ergebnis:
$ newform -e2 -l4 farben
rot
giftgruen
gelb
lilablassblau
Hier wird die effektive Zeilenlänge zunächst auf den Standardwert 80
gesetzt; es werden also nur die Zeilen gekürzt, die länger als 80 Zei-
chen sind - das ist hier keine einzige. Dann erst erhält die effektive
Zeilenlänge den Wert 4; das hat aber keine Auswirkung mehr.
Nun soll allen Zeilen der Datei farben, die höchstens 5 Zeichen ent-
halten, ein Stern vorangestellt werden. Anschließend soll in allen
Zeilen, die länger als 10 Zeichen sind, das letzte Zeichen abgeschnit-
ten werden.
$ newform -l5 -c* -p1 -l10 -e1 farben
*rot
giftgruen
*gelb
lilablassbla
Beispiel 6
Die Datei bestellung hat folgenden Inhalt:
1000 <TAB> Meier <TAB> Frankfurt
150 <TAB> Mueller <TAB> Muenchen
750 <TAB> Huber <TAB> Augsburg
2500 <TAB> Schmidt <TAB> Koeln <TAB> ***
Die Zeilen der Datei bestellung sollen nun folgendermaßen umformatiert
werden:
Die Zahlen und das erste Tabulatorzeichen sollen abgeschnitten werden,
so daß die Namen am Anfang stehen. Die übrigen Tabulatorzeichen sollen
in Leerzeichen umgewandelt werden, und zwar soll newform alle 15 Spal-
ten einen Tabulatorstopp annehmen (d. h. in den Spalten 16, 31, 46
usw.). Anschließend sollen alle Zeilen bis Spalte 30 mit Leerzeichen
aufgefüllt bzw. ab Spalte 31 abgeschnitten werden. Die abgeschnittenen
Zahlen sollen ab Spalte 31 stehen.
Seite 11 Reliant UNIX 5.44 Gedruckt 11/98
newform(1) newform(1)
Dies leistet der folgende newform-Aufruf:
$ newform -s -i-15 -l30 -a -e bestellung
Meier Frankfurt 1000
Mueller Muenchen 150
Huber Augsburg 750
Schmidt Koeln 2500
Beachten Sie, daß die Optionen von links nach rechts abgearbeitet wer-
den: Nachdem die Zahlen und das Tabulatorzeichen abgeschnitten wurden
(Option -s), beginnen die Namen auf Spalte 1. Nach der Umwandlung der
restlichen Tabulatorzeichen in Leerzeichen (Option -i-15) sind nur die
ersten 3 Zeilen kürzer als 30 Zeichen und werden folglich mit Leerzei-
chen aufgefüllt (Option -a); die letzte Zeile ist länger als 30 Zei-
chen und wird deshalb am Ende gekürzt (Option -e). Erst jetzt werden
die abgeschnittenen Zahlen ans Ende der Zeilen gesetzt (Option -s, 2.
Teil).
SIEHE AUCH
csplit(1), tabs(1), fspec(4).
Seite 12 Reliant UNIX 5.44 Gedruckt 11/98