webentwicklung-frage-antwort-db.com.de

eindeutige Werte in einer Datendatei suchen

Ich kann das in Python machen, aber ich habe mich gefragt, ob ich das unter Linux tun könnte

Ich habe eine solche Datei

name1 text text 123432re text
name2 text text 12344qp text
name3 text text 134234ts text

Ich möchte alle verschiedenen Arten von Werten in der 3. Spalte anhand eines bestimmten Benutzernamens finden, sagen wir Name 1.

grep name1 Dateiname gibt mir alle Zeilen, aber es muss eine Möglichkeit geben, alle unterschiedlichen Wertetypen aufzulisten. (Ich möchte keine doppelten Werte für denselben Benutzernamen anzeigen.)

14
Illusionist
grep name1 filename | cut -d ' ' -f 4 | sort -u

Dadurch werden alle Zeilen gefunden, die name1 haben. Dann wird nur die vierte Datenspalte abgerufen und nur eindeutige Werte angezeigt.

35
Mike Mertsock

Sie können sort nur nach dem vierten Schlüssel suchen und dann nur nach Datensätzen mit eindeutigen Schlüsseln fragen:

grep name1 | sort -k4 -u
8
Michał Šrajer

Ich habe versucht mitcat

Datei enthält: (hier ist foo.sh die Datei kann hier eingegeben werden)

$cat foo.sh

tar
world
class
Zip
zip
Zip
python
jin
jin
doo
doo

uniq erhält jedes Wort nur einmal

$ cat foo.sh | sort | uniq

class
doo
jin
python
tar
world
Zip

uniq -u wird das Wort nur einmal in der Datei erscheinen lassen

$ cat foo.sh | sort | uniq -u

class
python
tar
world

uniq -d erhält nur die doppelten Wörter und druckt sie einmal

$ cat foo.sh | sort | uniq -d

doo
jin
Zip
5
Rohan Khude

Als All-In-One-Lösung von awk:

awk '$1 == "name1" && ! seen[$1" "$4]++ {print $4}' filename
1
glenn jackman

Meiner Meinung nach müssen Sie das Feld auswählen, aus dem Sie die eindeutigen Werte benötigen. Ich habe versucht, eindeutige Quell-IPs aus dem IPTables-Protokoll abzurufen.

cat /var/log/iptables.log | grep "May  5" | awk '{print $11}' | sort -u

Hier ist die Ausgabe des obigen Befehls:

SRC=192.168.10.225

SRC=192.168.10.29

SRC=192.168.20.125

SRC=192.168.20.147

SRC=192.168.20.155

SRC=192.168.20.183

SRC=192.168.20.194

Daher ist es am besten, zuerst das Feld auszuwählen und dann die eindeutigen Daten herauszufiltern.

0
Mansur Ali