GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer la redondance des colonnes de sortie ?

Qu'est-ce qu'un moyen * NIX de supprimer la redondance dans un cas où j'ai des comparaisons par paires comme celles-ci dans deux colonnes

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

A B et B A représentent la même comparaison et je voudrais supprimer cette redondance de l'ensemble de données. Le résultat final devrait être

A B
A C
A D
B C

Réponse acceptée :

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
$

(ou, devenir plus terrifiant avec ça parce que la réponse de Chris Down est si douce)

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

qui pourrait être encore réduit si vous ne vous souciez pas des espaces dans vos données

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

)

Le FS est la variable "séparateur de champs" d'awk, utilisée ici pour garantir que les limites entre les champs clés seront correctement identifiées. Mon original les avait exécutés ensemble, $1$2 , qui comme l'a souligné Stéphane Chazelas aurait traité A BC et AB C comme doublons.


Linux
  1. Lum - Fusionner des colonnes à partir de deux fichiers distincts ?

  2. afficher la 2ème colonne d'un fichier

  3. MYSQL diffère dans la sortie du script

  4. Rediriger la sortie d'un bloc fonctionnel vers un fichier sous Linux

  5. Ligne de commande :Extraire la sous-chaîne de la sortie

Suppression des caractères de contrôle (y compris les codes/couleurs de la console) de la sortie du script ?

Coloriser la sortie des capteurs ?

Comment voir la sortie d'un script Php ?

Exécuter un script Python à partir de PHP

Comment diriger la sortie de grep vers cp?

sortie grep de long à large