2016-10-20 2 views
1

Ich habe eine große Tab-getrennte Textdatei und ich möchte alle Zeilen mit gleichen Werten entfernen und die Zeilen mit mindestens einem anderen Wert extrahieren;Entfernen von Zeilen mit den gleichen Werten

File.txt

Gen1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen2 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
Gen4 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen5 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 

Output.txt

Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 

Leider konnte ich die erwartete Ausgabe mit folgenden Befehle nicht erhalten;

perl -ne 'print if ! $a{$_}++' 

Oder sort -u oder uniq, sie funktioniert nicht, weil erste Spalte andere Namen hat.

+0

können Sie klarstellen, dass Gen1,2,4,5 Zeilen nicht Teil ausgegeben werden, da alle Werte in diesen Zeilen denselben Wert haben? Ihre erwartete Ausgabe entspricht nicht der Antwort, die Sie akzeptiert haben ... – Sundeep

+0

Es ist lustig, wie eine Frage zum "Entfernen von Zeilen mit gleichen Werten" als Duplikat geschlossen wurde. : D – anishsane

+0

dass auch wenn es kein duplikat ist (zumindest nicht das eine als markiert) ... kann jemand die frage erneut öffnen? – Sundeep

Antwort

2

sort mit ausgewählten Schlüsseln aus dem zweiten Feld bis Ende (-k2):

sort -t '\t' -uk2 file.txt 
  • -t '\t' setzt die Feldtrennzeichen wie Tab

  • -u die eindeutigen Einträge auf dem ausgewählten Schlüssel basierten erhalten

Beispiel:

% sort -uk2 file.txt 
Gen6 0.4353 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 
Gen3 1.0 1.0 1.0 5.0 0.55 1.0 1.0 1.0 1.0 
Verwandte Themen