Re: sort Frage

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Thu, 16 Aug 2007 17:30:09 +0200 (CEST)

manfred.lotz(at)arcor.de wrote:
> Oliver Fromme wrote:
> > [...]
> > 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. :-)

Backslash-Sequenzen werden von sort nicht geparst. Die
wenigsten UNIX-Tools tun das, und wenn, dann ist es aus-
drücklich in der Manpage dokumentiert.

> Wäre es genauso portabel statt dem newline ein Nullcharacter mitzugeben?
>
> Also: sort -t '\0' -k 1.36,1.43

Nein, die Sonderbehandlung von \0 ist ein Hack von GNU-sort
und nicht portabel.

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

Die meisten Tools, die mit zeilenorientierten Texten ar-
beiten, vertragen keine Nullbytes in der Eingabe, da die
üblichen String-Funktionen der C-Library Nullbytes zur
ennzeichnung des String-Endes verwenden. Insofern ist
es nicht abwegig, zu fordern bzw. davon auszugehen, dass
Textdateien keine Nullbytes enthalten dürfen.

Aber wie gesagt, »sort -t '\0'« ist nicht portabel. Unter
Solaris z.B. wird alles nach dem ersten Zeichen ignoriert,
d.h. er nimmt dann den Backslash '\' als Spaltenseparator.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart
FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd
Perl is worse than Python because people wanted it worse.
        -- Larry Wall
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 - 17:32:36 CEST

search this site