/ 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
Sort lexicographically
Fra : JoeDoe


Dato : 11-09-09 01:30

Jeg har følgende tekst:

Hej TxtA1
Dette TxtA2
Er TxtA11
En TxtA3
Test TxtB10
Af TxtB1
Sort TxtB2

Hvordan får jeg dem sorteret således:

Hej TxtA1
Dette TxtA2
En TxtA3
Er TxtA11
Af TxtB1
Sort TxtB2
Test TxtB10

Dvs. sorteret efter [A1] til [B10].

Jeg kan ikke lige gennemskue om "sort" kan klare opgaven eller om man
skal ud i at splitte strengen op?

 
 
Peter Makholm (11-09-2009)
Kommentar
Fra : Peter Makholm


Dato : 11-09-09 12:21

JoeDoe <joedoe10@gmail.com> writes:

> Dvs. sorteret efter [A1] til [B10].
>
> Jeg kan ikke lige gennemskue om "sort" kan klare opgaven eller om man
> skal ud i at splitte strengen op?

Det er ikke let da din nøgle er en blanding af tekst der skal sorteres
leksikalsk og tal der skal sorteres numerisk.

At det så også er svært at fange din egentlige nøgle er et andet
problem. Men i det konkrete tilfælde kan det ignoreres og lade den
sortere på [TxtA1] til [TxtB10].

//Makholm

Jens Henrik Leonhard~ (11-09-2009)
Kommentar
Fra : Jens Henrik Leonhard~


Dato : 11-09-09 17:09

JoeDoe wrote:
> Jeg har følgende tekst:
>
> Hej TxtA1
> Dette TxtA2
> Er TxtA11
> En TxtA3
> Test TxtB10
> Af TxtB1
> Sort TxtB2
>
> Hvordan får jeg dem sorteret således:
>
> Hej TxtA1
> Dette TxtA2
> En TxtA3
> Er TxtA11
> Af TxtB1
> Sort TxtB2
> Test TxtB10
>
> Dvs. sorteret efter [A1] til [B10].

sort -g -k 2

Det sorter på andet felt, med blank som separator, og behandler tal som
du ønsker.

Den sorter efter TxtA1 til TxtB10.

/Jens Henrik

Mogens Kjaer (12-09-2009)
Kommentar
Fra : Mogens Kjaer


Dato : 12-09-09 16:10

On 09/11/2009 06:08 PM, Jens Henrik Leonhard Jensen wrote:

> sort -g -k 2
....

Hm, jeg får:

$ sort -g -k 2 < t1.dat
Af TxtB1
Dette TxtA2
En TxtA3
Er TxtA11
Hej TxtA1
Sort TxtB2
Test TxtB10

$ sort --version
sort (GNU coreutils) 7.2
....

Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
Email: mk@crc.dk Homepage: http://www.crc.dk

Niels Baggesen (15-09-2009)
Kommentar
Fra : Niels Baggesen


Dato : 15-09-09 15:33

Jens Henrik Leonhard Jensen <jhlj@statsbiblioteket.dk> wrote:
> sort -g -k 2

> Det sorter på andet felt, med blank som separator, og behandler tal som
> du ønsker.

men behandler ikke A B rækken korrekt.

Prøv med
sort -k 2.5,2.5 -k 2.6n

(jeg synes også selv at tegnpositionerne er een for høje, men det virker på
min Centos 5.3 med sort 5.97)

/Niels

--
Niels Baggesen -- @home -- Århus -- Denmark -- niels@baggesen.net
The purpose of computing is insight, not numbers -- R W Hamming

Jørgen Heesche (12-09-2009)
Kommentar
Fra : Jørgen Heesche


Dato : 12-09-09 21:45

JoeDoe wrote:
> Jeg har følgende tekst:
>
> Hej TxtA1
> Dette TxtA2
> Er TxtA11
> En TxtA3
> Test TxtB10
> Af TxtB1
> Sort TxtB2
>
> Hvordan får jeg dem sorteret således:
>
> Hej TxtA1
> Dette TxtA2
> En TxtA3
> Er TxtA11
> Af TxtB1
> Sort TxtB2
> Test TxtB10
>
> Dvs. sorteret efter [A1] til [B10].
>
Det kan man ikke.
Den sortering du ønsker er forøvrigt ikke lexicographically.
Sorteret lexicographically ser det sådan ud:
Hej TxtA1
Er TxtA11
Dette TxtA2
En TxtA3
Af TxtB1
Test TxtB10
Sort TxtB2

Den sortering fås med: 'sort -dk 2'


> Jeg kan ikke lige gennemskue om "sort" kan klare opgaven eller om man
> skal ud i at splitte strengen op?

--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@webspeed.dk

JoeDoe (13-09-2009)
Kommentar
Fra : JoeDoe


Dato : 13-09-09 23:30

> > Jeg kan ikke lige gennemskue om "sort" kan klare opgaven eller om man
> > skal ud i at splitte strengen op?
>
> Det er ikke let da din nøgle er en blanding af tekst der skal sorteres
> leksikalsk og tal der skal sorteres numerisk.
>
> At det så også er svært at fange din egentlige nøgle er et andet
> problem. Men i det konkrete tilfælde kan det ignoreres og lade den
> sortere på [TxtA1] til [TxtB10].

Nej ikke helt fordi jeg så får denne sortering:

sort +1 mytxtfile.txt
Hej TxtA1
Er TxtA11
Dette TxtA2
En TxtA3
Af TxtB1
Test TxtB10
Sort TxtB2

Kan man ikke substring "Txt" ud på én eller anden måde og derefter
sortere på det resterende?

Thorbjørn Ravn Ander~ (14-09-2009)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 14-09-09 06:49

JoeDoe skrev:

> Kan man ikke substring "Txt" ud på én eller anden måde og derefter
> sortere på det resterende?

Problemet er at din nøgle ikke er i orden.

A11 er større end A3 og det er der ikke nogen indbygget sammenligning
der kan håndtere.



--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"

N/A (14-09-2009)
Kommentar
Fra : N/A


Dato : 14-09-09 06:49



JoeDoe (16-09-2009)
Kommentar
Fra : JoeDoe


Dato : 16-09-09 00:19

> Prøv med
> sort -k 2.5,2.5 -k 2.6n
>
> (jeg synes også selv at tegnpositionerne er een for høje, men det virker på
> min Centos 5.3 med sort 5.97)

Mange tak, det er lige hvad der skulle til:

srv@dir> cat mytxt | sort -k 2.5,2.5 -k 2.6n
Hej TxtA1
Dette TxtA2
En TxtA3
Er TxtA11
Af TxtB1
Sort TxtB2
Test TxtB10

Men sandt at sige forstår jeg ikke helt sætningen.

"man sort":
POS is F[.C][OPTS], where F is the field number and C
the character position in the field. OPTS is one or more
single-letter ordering options, which override global ordering
options for that key. If no key is given, use the entire
line as the key.

Så vidt jeg kan forstå er det følgende:

sort -k 2.5,2.5 -k 2.6n

-k 2.5,2.5
Sortér først på dette output.
Start ved kolonne 2, tegn 5
Slut ved kolonne 2, tegn 5 (det er det samme???)

-k 2.6n
Sortér sekundært på dette output.
Start ved kolonne 2, tegn 6 og sortér nummérisk.

Jeg forstår ikke første "-k" statement og ærligt talt kan jeg heller
ikke helt få tegnene til at stemme?

Men tak for det - det fungere glimrende til lige disse linier, så skal
jeg bare lige forstå det for at rette det til mine reelle linier

Mogens Kjaer (16-09-2009)
Kommentar
Fra : Mogens Kjaer


Dato : 16-09-09 07:32

On 09/16/2009 08:19 AM, JoeDoe wrote:
> -k 2.5,2.5
> Sortér først på dette output.
> Start ved kolonne 2, tegn 5
> Slut ved kolonne 2, tegn 5 (det er det samme???)
>
> -k 2.6n
> Sortér sekundært på dette output.
> Start ved kolonne 2, tegn 6 og sortér nummérisk.
>
> Jeg forstår ikke første "-k" statement og ærligt talt kan jeg heller
> ikke helt få tegnene til at stemme?
>

Den første -k 2.5,2.5 sorterer på A'et eller B'et (ét tegn).

Den næste -k 2.6n sorterer på tallene efter A'et eller B'et.

Det er ikke klart ud fra man-siden i CentOS, men blanktegnet før
Txt tæller med. Fra en nyere man sort side (Fedora 11):

....
POS is F[.C][OPTS], where F is the field number and C the character
position in the field; both are origin 1. If neither -t nor -b is in
effect, characters in a field are counted from the beginning of the
preceding whitespace. OPTS is one or more single-letter ordering
options, which override global ordering options for that key. If no
key is given, use the entire line as the key.
....

Mogens

--
Mogens Kjaer, Carlsberg A/S, Computer Department
Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
Phone: +45 33 27 53 25, Mobile: +45 22 12 53 25
Email: mk@crc.dk Homepage: http://www.crc.dk

N/A (16-09-2009)
Kommentar
Fra : N/A


Dato : 16-09-09 07:32



JoeDoe (16-09-2009)
Kommentar
Fra : JoeDoe


Dato : 16-09-09 23:31

> > -k 2.5,2.5
> > Sortér først på dette output.
> > Start ved kolonne 2, tegn 5
> > Slut ved kolonne 2, tegn 5 (det er det samme???)
>
> > -k 2.6n
> > Sortér sekundært på dette output.
> > Start ved kolonne 2, tegn 6 og sortér nummérisk.
>
> > Jeg forstår ikke første "-k" statement og ærligt talt kan jeg heller
> > ikke helt få tegnene til at stemme?
>
> Den første -k 2.5,2.5 sorterer på A'et eller B'et (ét tegn).
>
> Den næste -k 2.6n sorterer på tallene efter A'et eller B'et.
>
> Det er ikke klart ud fra man-siden i CentOS, men blanktegnet før
> Txt tæller med. Fra en nyere man sort side (Fedora 11):
>
> ...
> POS  is  F[.C][OPTS],  where  F is the field number and C the character
> position in the field; both are origin 1.  If neither -t nor -b  is  in
> effect,  characters  in  a  field are counted from the beginning of the
> preceding whitespace.  OPTS  is  one  or  more  single-letter  ordering
> options,  which  override  global ordering options for that key.  If no
> key is given, use the entire line as the key.

Vil der være en genial måde, at sortere en IP adresse liste på med
sort? Det er jo ikke helt så statisk som ovenstående eksempel, da det
kan være alt lige fra 7 tegn lang til 15 tegn lang (og måske endda med
0 foran, hvis man skal tage højde for det?).

Niels Baggesen (17-09-2009)
Kommentar
Fra : Niels Baggesen


Dato : 17-09-09 09:04

JoeDoe <joedoe10@gmail.com> wrote:
> Vil der være en genial måde, at sortere en IP adresse liste på med
> sort? Det er jo ikke helt så statisk som ovenstående eksempel, da det
> kan være alt lige fra 7 tegn lang til 15 tegn lang (og måske endda med
> 0 foran, hvis man skal tage højde for det?).

sort -t . -k1,1n -k2,2n -k3,3n -k4,4n

/Niels

--
Niels Baggesen -- @home -- Århus -- Denmark -- niels@baggesen.net
The purpose of computing is insight, not numbers -- R W Hamming

JoeDoe (17-09-2009)
Kommentar
Fra : JoeDoe


Dato : 17-09-09 23:16

> > Vil der være en genial måde, at sortere en IP adresse liste på med
> > sort? Det er jo ikke helt så statisk som ovenstående eksempel, da det
> > kan være alt lige fra 7 tegn lang til 15 tegn lang (og måske endda med
> > 0 foran, hvis man skal tage højde for det?).
>
> sort -t . -k1,1n -k2,2n -k3,3n -k4,4n

Sandelig ja - det fungere som en drøm, mange tak

Niels Baggesen (18-09-2009)
Kommentar
Fra : Niels Baggesen


Dato : 18-09-09 07:55

JoeDoe <joedoe10@gmail.com> wrote:
> Sandelig ja - det fungere som en drøm, mange tak

Har du overvejet:

man sort
info sort

;-?

/Niels

--
Niels Baggesen -- @home -- Århus -- Denmark -- niels@baggesen.net
The purpose of computing is insight, not numbers -- R W Hamming

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

Månedens bedste
Årets bedste
Sidste års bedste