
Ich suche nach einer Lösung zum Sortieren in Postgres, aber es scheint eher ein Problem der Sortierung zu sein, und daher stelle ich die Frage stattdessen nach dem Standard-Unix-Sortierbefehl.
Mir liegen folgende Daten vor:
A_A1
A\A2
A_A2
A\A1
nach dem Sortieren erhalte ich:
cat test.txt |sort
A_A1
A\A1
A_A2
A\A2
aber ich möchte:
A_A1
A_A2
A\A1
A\A2
Ich habe es auch versucht LANG=C cat...
, aber ohne Erfolg. Welche Sortierregel würde es mir also ermöglichen, die Sonderzeichen nicht zu ignorieren?
Antwort1
Aus man sort
:
Set LC_ALL=C to get the traditional sort order that uses native byte values.
Also:
$ LC_ALL=C sort test.txt
A\A1
A\A2
A_A1
A_A2
daher sortiert das Gebietsschema C nach dem Bytewert.
Sie müssen
$ cat test.txt | LC_ALL=C sort
wenn Sie es so weiterleiten möchten (versuchen Sie jedoch immer, die Dateinamenversion direkt zu verwenden, wenn diese verfügbar ist).
Die primäre Umgebungsvariable, die dies beeinflusst, ist LC_COLLATE
. Wenn LC_ALL
jedoch gesetzt ist, übertrumpft sie alle spezifischen LC_
Werte. Wenn weder LC_ALL
noch LC_COLLATE
gesetzt sind, wird auf zurückgegriffen LANG
. WennDasist nicht festgelegt. Der Standardwert ist „locale“ C
.