GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sortierbefehl in Linux mit Beispielen

Der Sortierbefehl wird in Linux- und Unix-Systemen verwendet, um den Inhalt der Datei in einer bestimmten Reihenfolge anzuordnen. Mit dem Sortierbefehl ordnen Sie Zeilen, Buchstaben und Zahlen in einer Datei.

Der Sortierbefehl hat viele nützliche Optionen, um die Reihenfolge umzukehren, eine Datei numerisch zu sortieren, eine Tabelle nach Spaltennummer zu sortieren, zu prüfen, ob eine Datei bereits sortiert ist und Duplikate zu entfernen.

In diesem Tutorial lernen wir anhand einiger praktischer Beispiele etwas über den Sortierbefehl in Linux.

Sortierbefehl und seine Syntax

Die folgende Zeile zeigt die Sortierbefehlssyntax:

sort [options] [files]

Es nimmt standardmäßig Eingaben von STDIN entgegen, kann aber Dateien sortieren, wenn Dateinamen als Argument angegeben werden, und es kann auch numerisch sortieren.

Der Sortierbefehl kann aufgerufen werden, indem Sie einfach sort eingeben im Endgerät. Es fordert dann zur Eingabe von STDIN auf. Nach Eingabe von STDIN ctrl+d wird zur Markierung des Eingabeendes eingetragen.

Die folgende Ausgabe zeigt, dass die Eingabedaten von STDIN in alphabetischer Reihenfolge neu angeordnet sind.

$ sort
cappa
beta
delta
theta
alpha

alpha
beta
cappa
delta
theta

Sortiere eine Datei

Standardmäßig behandelt sort alle Zeichen als Zeichenketten. Die numerischen Zeichen werden ebenfalls als Zeichen behandelt.

Zuerst erstellen wir eine Datei mit zu sortierenden numerischen Daten. Der folgende Befehl erstellt eine Datei „numeric.txt“ mit numerischen Daten:

$ cat > numeric.txt
01
10
25
83
502
111

Lassen Sie uns nun die Datei 'numeric.txt' wie folgt sortieren:

$ sort numeric.txt
01
10
111
25
502
83

Die oben gezeigte Ausgabe ist nicht das, was wir im Allgemeinen erwarten. Natürlich ist 111 größer als 25 und 502 ist auch größer als 83. Aber wenn Sie genau hinsehen, sind die Zahlen in der Reihenfolge des Wörterbuchs sortiert.

Vergleichen Sie zum Beispiel für 111 und 25 das erste Zeichen, 1 steht vor 2. Daher wird 111 vor 25 platziert.

Lassen Sie uns nun überprüfen, wie es sortiert wird, wenn der Inhalt Alphabete oder Wörter ist. Die folgende Datei 'wordlist.txt' enthält Wörter, die mit Groß- und Kleinbuchstaben beginnen, und zeigt eine sortierte Liste an:

$ sort wordlist.txt
Aeroplane
ant
apple
bark
born
Box
Cat
tom
welcome

Sortieroptionen

Der Sortierbefehl bietet ziemlich gute Optionen zum Sortieren von Dateiinhalten. Lassen Sie uns einige davon wie folgt besprechen:

sortiere -n :Um eine Datei numerisch zu sortieren.
sortiere -u :Zeilen unterdrücken, die einen früheren Schlüssel wiederholen.
sortiere -k :Sortieren einer Tabelle nach Spaltennummer.
sortiere -t SEP:Verwenden Sie das bereitgestellte Trennzeichen, um die Felder zu identifizieren.
sortiere -M :Nach dem angegebenen Kalendermonat sortieren.
sortiere -b :Leerzeichen am Zeilenanfang ignorieren.
sortiere -r :Sortierung in umgekehrter Reihenfolge.
sortiere -o :Ausgabe in eine neue Datei.

Datei numerisch sortieren (Option -n)

Wenn wir den Inhalt einer Datei numerisch sortieren wollen, verwenden wir -n Option.

Im folgenden Beispiel enthält die Datei „numeric.txt“ Zahlen und die Daten sind in numerischer Reihenfolge sortiert:

$ sort -n numeric.txt
01
10
25
83
111
502

Um die Nummer in der Datei umzukehren, verwenden Sie eine Kombination aus -nr Option.

Zum Beispiel:

$ sort -nr numeric.txt
502
111
83
25
10
01

Doppelte Zeilen sortieren und entfernen (Option -u)

Um doppelte Zeilen aus einer Datei zu sortieren und zu entfernen, verwenden Sie -u Möglichkeit. Der erste Befehl listet den Inhalt der Datei replica.txt mit dem cat-Befehl auf und der zweite verwendet -u Option zum Entfernen doppelter Zeilen.

Beispiel:

$ cat duplicate.txt
hello
linux
lInux
Linux
raghu
world
zzz
zzz

Beispielausgabe, in der Sie sehen können, dass die doppelten Zeilen aus der Datei „duplicate.txt“ entfernt wurden:

$ sort -u duplicate.txt
hello
linux
lInux
Linux
raghu
world
zzz

Sortieren und Groß-/Kleinschreibung ignorieren (Option -f)

Wie viele andere Linux- und Unix-Tools unterscheidet der Sortierbefehl standardmäßig zwischen Groß- und Kleinschreibung. Aber wenn wir den Fall ignorieren müssen, können wir -f verwenden oder --ignore-case Option.

Beispielsweise gibt es in der Datei „duplicate.txt“ drei Instanzen des Wortes „linux“ in unterschiedlichen Fällen. Standardmäßig werden sie alle mit -u ausgegeben Möglichkeit. Das bedeutet, dass sie für den Sortierbefehl nicht eindeutig sind.

Aber wenn wir -f verwenden Option würde sie wie unten gezeigt ignoriert:

$ sort -f -u duplicate.txt
hello
linux
raghu
world
zzz

Nach Spalte sortieren (Option -k)

Der Sortierbefehl kann jede Tabelle anhand der Spaltennummer mit -k sortieren Möglichkeit. Verwenden Sie zum Beispiel '-k3', um die dritte Spalte in der Tabelle zu sortieren.

Nehmen wir an, wir haben ein Inhaltsverzeichnis in der Datei „population.txt“ wie folgt:

$ cat population.txt
Kids 500 India
Youth 400 England
Senior 600 USA
Junior 9000 Australia
Pensioners 650 China

Im Folgenden sortieren wir die Tabelle anhand der Spalte Nummer 2 in der Datei population.txt:

$ sort -k2 population.txt
Youth 400 England
Kids 500 India
Senior 600 USA
Pensioners 650 China
Junior 9000 Australia

Mehrere Spalten sortieren

In einigen Situationen müssen Sie möglicherweise eine Tabelle nach mehreren Spalten sortieren. Nehmen wir ein Beispiel einer Datei, die mehrere Datenspalten enthält.

Die folgende Datei „columns.txt“ enthält mehrere Spalten wie aufgelistet:

cat columns.txt
version1.2    10  25
version1.2    30  50
version1.1    10  30
version1.1    40  50
version1.2    40  50
version1.1    10  20
version1.1    5   8

Überprüfen Sie nun den Befehl, um die Spalten 1, 2 und 3 in numerischer Reihenfolge zu sortieren.

$ sort -k1,1 -k2,2n -k3,3n columns.txt
version1.1    5   8
version1.1    10  20
version1.1    10  30
version1.1    40  50
version1.2    10  25
version1.2    30  50
version1.2    40  50

Nach Spaltenfeldtrennzeichen sortieren (Trennzeichen -t Option)

Standardmäßig ist das Trennzeichen für Spalten Leerzeichen oder Tabulatoren. Aber wir können benutzerdefinierte Trennzeichen mit -t verwenden oder --field-separator Option in Sortierung.

Nehmen wir ein Beispiel, verwenden Sie den Doppelpunkt (:) als Trennzeichen und die Datei „/etc/passwd“ zum Sortieren.

Wenn wir die /etc/passwd-Datei nach UIDs sortieren wollen, verwenden wir den folgenden Befehl:

$ sort -n -t ':' -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
<---output truncated--->

Nach Monat sortieren (Option -M)

Mit -M Option können Sie nach Monat sortieren. Wenn Sie eine Datei mit Monaten haben, sortieren Sie die Befehlsreihenfolge nach Monaten.

Beispielsweise enthält die Datei „months.txt“ eine Liste mit Monatsnamen.

$ cat months.txt
sep
august
july
dec
feb
may
jan

Wir werden jetzt die Option -M verwenden, um die Datei „months.txt“ nach Monat zu sortieren.

$ sort -M months.txt
jan
feb
may
july
august
sep
dec

Von Menschen lesbare Zahlen sortieren (Option -h)

Sort kann menschenlesbare Zahlen wie 2K, 5G, 3M mit -h oder --human-numeric-sort sortieren Option.

Beispiel:Unten aufgeführte Dateiliste für Menschen lesbare Nummer

$ cat human_numeric.txt
4G
2K
3M
1G
34K
52M
200M

Verwenden Sie im folgenden Befehl -h Option zum Vergleichen und Sortieren von menschenlesbaren Zahlen.

$ sort -h human_numeric.txt
2K
34K
3M
52M
200M
1G
4G

Auf sortierte Eingabe prüfen (Option -c)

Der Sortierbefehl kann mit -c prüfen, ob die Eingabe bereits sortiert ist oder nicht Möglichkeit. Wenn es nicht sortiert ist, gibt es die erste unsortierte Zeile zurück.

$ sort -c /etc/passwd
sort: /etc/passwd:2: disorder: daemon:x:1:1:daemon:/usr/sbin:/bin/sh

Bei sortierter Eingabe wird nichts ausgegeben:

$ sort /etc/passwd | sort -c
$ echo $?
0

Mit anderen Befehlen sortieren

Die Sortierung ist ein Textverarbeitungswerkzeug, daher kann sie verwendet werden, indem einige Eingaben von einem anderen Befehl weitergeleitet werden.

Im folgenden Befehl verwenden wir die Ausgabe des tail-Befehls als Eingabe für sort:

$ tail /etc/passwd | sort
altair:x:1001:1001:Altair Ibn La Ahad,,,,:/home/altair:/bin/bash
bind:x:120:132::/var/cache/bind:/bin/false
dnsmasq:x:121:65534:dnsmasq,,,:/var/lib/misc:/bin/false
mysql:x:115:129:MySQL Server,,,:/nonexistent:/bin/false
postfix:x:105:126::/var/spool/postfix:/bin/false
raghu:x:1000:1000:raghu,,,:/home/raghu:/bin/bash
smmsp:x:119:131:Mail Submission Program,,,:/var/lib/sendmail:/bin/false
smmta:x:118:130:Mail Transfer Agent,,,:/var/lib/sendmail:/bin/false
sshd:x:117:65534::/var/run/sshd:/usr/sbin/nologin
statd:x:116:65534::/var/lib/nfs:/bin/false

Die Sortierung kann mit der Option -r umgekehrt werden.

Nehmen wir ein weiteres Beispiel, um die Ausgabe des Befehls in einem für Menschen lesbaren Format nach Größe zu sortieren. Verwenden Sie den folgenden Befehl:

$ du -h | sort -h

Schlussfolgerung

In diesem Tutorial lernen wir die Linux-Sortierung und ihre Option zum Sortieren von Dateiinhalten kennen. Ich hoffe, Sie hatten Spaß beim Lesen und kommentieren Sie bitte unten, wenn Sie weitere Beispiele finden.


Linux
  1. wc Linux-Befehl mit Beispielen

  2. JQ-Befehl in Linux mit Beispielen

  3. ln-Befehlsbeispiele in Linux

  4. file Befehlsbeispiele in Linux

  5. sort-Befehlsbeispiele in Linux

Linux-WC-Befehl mit Beispielen

Sortierbefehl in Linux mit Beispielen

Verwendung des Linux-mv-Befehls mit Beispielen

Linux-Mount-Befehl mit Beispielen

gawk Linux-Befehl mit Beispielen

Linux-make-Befehl mit Beispielen