---
title: "Hur sortera i textfilsdatabas?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/19334-hur-sortera-i-textfilsdatabas"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "Joakim"
published: "2001-04-05T15:46:00.000Z"
updated: "2001-04-12T13:30:00.000Z"
replies: 3
views: 198
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/19334-hur-sortera-i-textfilsdatabas"
---

# Hur sortera i textfilsdatabas?

## #1 — Joakim, 2001-04-05T15:46Z

Morsning!

Sitter och klurar på en liten grej. Låt oss säga att jag har en enkel textfils databas med rader av typen:

IDNUMMER&#0124;NAMN&#0124;TELEFONNUMMER

Jag har ett gäng såna rader i min fil. Jag läser in filen och har raderna "o-splittade" i @database. Om jag vill sortera raderna i bokstavsordning efter namnfältet innan jag splittar varje rad och skriver ut den, hur går jag till väga då?

Exempel:

1&#0124;Bertil Johansson&#0124;123457
2&#0124;Adam Johansson&#0124;123456
3&#0124;Curt Johansson&#0124;123458

Jag vill sortera dom till:

2&#0124;Adam Johansson&#0124;123456
1&#0124;Bertil Johansson&#0124;123457
3&#0124;Curt Johansson&#0124;123458

innan jag börjar splitta raderna till variabler och skriva ut databasinnehållet. Någon som kan upplysa mig?

Tack på förhand!

Permalänk: https://www.webforum.nu/p/19334

## #2 — Jojoxx, 2001-04-10T05:55Z

Jag skulle börja med att stuva om raderna så att du får en annan kolumnfäljd (namn först) och sedan sortera som vanlig;

```
for($n=0;$n<=#$database;$n++){
   @parts=split(/\&#0124;/,$database[$n]); $database[$n]=join('&#0124;',$parts[1],$parts[0],$parts[2]);
}
@database=sort(@database);
```

Permalänk: https://www.webforum.nu/p/341771

## #3 — Joakim, 2001-04-10T14:11Z

Tackar!

Jag strukurerade om filen istället. Funkar fint nu.

// Joakim

Permalänk: https://www.webforum.nu/p/341772

## #4 — cya, 2001-04-12T13:30Z

Hej!

Man kunde också löst det så här:

```
#!/usr/bin/perl -w

use strict;

my @database = (
  '2&#0124;Adam Johansson&#0124;123456',   '3&#0124;Curt Johansson&#0124;123458',
  '4&#0124;Per Johansson&#0124;123458',    '5&#0124;Gustav Johansson&#0124;123458',
  '1&#0124;Bertil Johansson&#0124;123457', '6&#0124;Göran Johansson&#0124;123457',
);

@database =
  map { $_->[0] }
  sort { $a->[2] cmp $b->[2] }
  map { [ $_, ( split /\&#0124;/ ) ] } 
  @database;

print join "\n", @database;
```

Sorterings formen (map-sort-map) är känd som "Schwartzian Transform".

//Cya

Permalänk: https://www.webforum.nu/p/341773

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/19334-hur-sortera-i-textfilsdatabas
