Re: sort Frage

From: <manfred.lotz(at)arcor.de>
Date: Thu, 16 Aug 2007 16:05:04 +0200

At Thu, 16 Aug 2007 12:20:13 +0200 (CEST),
Oliver Fromme wrote:
>
> Manfred Lotz wrote:
> > ich möchte eine Datei sortieren, die aber keine Felder hat, die durch
> > irgendeinen Separator getrennt sind. Genau genommen möchte ich
> > sortieren nach z.B. ab der 36. Spalte genau 8 Zeichen lang.
> >
> > Ich habe sort -t '' -k 38.8 probiert, aber dies funktionierte nicht.
>
> Wenn der Inhalt der Zeilen nicht bekannt ist und daher
> theoretisch jedes beliebige Zeichen vorkommen kann, gibt
> es nur eine (portable) Möglichkeit, mit sort(1) zeichen-
> weise zu sortieren: Man muss ein Newline als Spalten-
> trenner angeben, um zu erzwingen, dass die ganze Zeile
> als eine Spalte angesehen wird:
>
> $ sort -t "^J" -k 1.36,1.43
>
> Das »^J« darf man nicht wörtlich eingeben (also _nicht_
> Dach-J, ebensowenig »\n«), sondern man muß ein echtes
> Newline angeben. Bei den meisten Shells kann man das
> interaktiv (am Prompt) eingeben, indem man Ctrl-V Ctrl-J
> eintippt (je nach Shell wird dann »^J« oder »^M« oder
> ein echter Zeilenumbruch angezeigt).
>
> In einem Shellskript kann man an der Stelle einfach einen
> ganz normalen Zeilenumbruch eingeben:
>
> sort -t "
> " -k 1.36,1.43
>
> Und weil das nicht so schön aussieht, kann man sich auch
> vorher ein Newline in eine Variable packen und die dann
> (evtl. mehrmals) benutzen:
>
> NL="
> "
>
> sort -t "$NL" -k 1.36,1.43
>

Sehr gut, danke. Ich hatte bisher '\n' versucht und war gescheitert. :-)

Wäre es genauso portabel statt dem newline ein Nullcharacter mitzugeben?

Also: sort -t '\0' -k 1.36,1.43

Natürlich darf dann in einer Zeile kein 0x00 auftauchen sonst gehts
nicht.

-- 
Manfred
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 16 Aug 2007 - 16:07:07 CEST

search this site