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

Redundanz aus Ausgabespalten entfernen?

Was ist eine *NIX-Methode zum Entfernen von Redundanz in einem Fall, in dem ich paarweise Vergleiche wie diese in zwei Spalten habe

    A B
    B A
    A C
    A D
    C A
    D A 
    B C
    C B

A B und B A denselben Vergleich darstellen und ich möchte solche Redundanzen aus dem Datensatz entfernen. Das Endergebnis sollte sein

A B
A C
A D
B C

Akzeptierte Antwort:

doit () 
{ 
    awk '{
           key=$1<=$2? $1 FS $2 : $2 FS $1; 
           if (!seen[key]) print $1,$2
           seen[key]=1
    }'
}
$ doit <test
A B
A C
A D
B C
$

(oder es wird knapper, weil Chris Downs Antwort so süß ist)

awk '!seen[$1<=$2? $1 FS $2: $2 FS $1]++ {print $1,$2}'

was weiter reduziert werden könnte, wenn Sie sich nicht um die Leerzeichen in Ihren Daten kümmern

awk '!seen[$1<=$2? $1 FS $2: $2 FS $1]++'

)

Der FS ist die „Feldtrenner“-Variable von awk, die hier verwendet wird, um sicherzustellen, dass die Grenzen zwischen Schlüsselfeldern richtig identifiziert werden. Bei meinem Original liefen sie zusammen, $1$2 , die, wie Stephane Chazelas betonte, A BC behandelt hätte und AB C als Duplikate.


Linux
  1. Entfernen von Steuerzeichen (einschließlich Konsolencodes/-farben) aus der Skriptausgabe?

  2. Lum – Spalten aus zwei separaten Dateien zusammenführen?

  3. Linux – Die Buffers-Spalte in der Ausgabe von Free?

  4. Lassen Sie Ls Skripte von Binärdateien in der Ausgabe unterscheiden?

  5. Ein- und Ausgabe von einer bestimmten ausführbaren Datei abfangen?

Ausgabe von Sensoren einfärben?

Wie kann man die Ausgabe eines Php-Skripts sehen?

Wie erhalte ich eine Ausgabe von gdb.execute in PythonGDB (GDB 7.1)?

Ausführen eines Linux-Befehls von Python

MYSQL unterscheidet sich in der Ausgabe vom Skript

Befehlszeile:Substring aus der Ausgabe extrahieren