/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Sortering med /usr/bin/sort
Fra : Morten


Dato : 26-05-03 10:07

Hej. Hvordan får man sort til at kun sortere efter et bestemt
felt? Iflg. "man sort" kan man afgrænse sorteringen til at gå
efter et bestemt felt. I nedenstående skal sort kun sortere
efter den første kolonne.

[dellbert]~>cat ntest
aaa 1
bbb 2
aaa 5
aaa 4
bbb 1
bbb 9
[dellbert]~>sort -k 1,1 ntest
aaa 1
aaa 4
aaa 5
bbb 1
bbb 2
bbb 9

Men den betragter også 2. kolonne, hvilket jeg gerne vil undgå,
således jeg får:

aaa 1
aaa 5
aaa 4
bbb 2
bbb 1
bbb 9

Hvis jeg for eksemplets skyld tilføjer en 3. kolonne:

[dellbert]~>cat ntest
aaa 1 xx
bbb 2 ss
aaa 5 ss
aaa 4 ss
bbb 1 aa
bbb 9 ss

Og nu sorterer på anden kolonne, så tager den ikke 3. kolonne
i betragtning (da "bbb 1 aa" så ville komme før "aaa 1 xx"):

[dellbert]~>sort -k 2,2 ntest
aaa 1 xx
bbb 1 aa
bbb 2 ss
aaa 4 ss
aaa 5 ss
bbb 9 ss

Jeg forstår det ikke.

Mvh Morten

 
 
Peter Makholm (26-05-2003)
Kommentar
Fra : Peter Makholm


Dato : 26-05-03 10:19

usenet@kikobu.com (Morten) writes:

> Men den betragter også 2. kolonne, hvilket jeg gerne vil undgå,
> således jeg får:

[...]

> Jeg forstår det ikke.

Du antager at sort(1)'s sorteringsalgoritme er stabil[0]. Det er den
kun hvis du eksplicit beder om det.

bash-2.05b$ cat > ntest
aaa 1
bbb 2
aaa 5
aaa 4
bbb 1
bbb 9
bash-2.05b$ sort -k 1,1 ntest
aaa 1
aaa 4
aaa 5
bbb 1
bbb 2
bbb 9
bash-2.05b$ sort -k 1,1 ntest -s
aaa 1
aaa 5
aaa 4
bbb 2
bbb 1
bbb 9
bash-2.05b$

0) At en sorteringsalgoritme er stabil vil sige at elementer der er
ens med hensyn til samligningsfunktionen ikke bytter plads under
sorteringen.


--
Peter Makholm | According to the hacker ethic, the meaning of life
peter@makholm.net | is not Friday, but it is not Sunday either
http://hacking.dk | -- Peeka Himanen

Morten (27-05-2003)
Kommentar
Fra : Morten


Dato : 27-05-03 10:02

Ooh. Tak for tippet, det var påmindelsen om stabilitet jeg havde
brug for. Jeg glemte at nævne at det er under solaris og at der
ikke er gnu-tools installeret, så -s switchen eksisterer ikke.
Men takket være dit hint fandt jeg frem til, at man kan lave
et lille work around for at få sort under solaris til at sortere
stabilt:

cat ntest|nl -ba|sort -k2,2|cut -d ' ' -f2-

Hvilket generaliserer det jeg observerede med min -k2,2 sortering.

Mvh Morten

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste