2017-03-09 4 views
0

Ich habe eine Datei wie dieseExtract-IDs aus den Spalten

Anid|Mycfi2_180833_Genemark.11845_g  scer|maker-scaffold119_size133949-snap-gene-0.138-mRNA-2 
Medi|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 scer|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-6 
Scer|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Oryz|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2 
Usti|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Mfij|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2 
Usti|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Anid|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2 
Anid|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 Medi|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2 

Eigentlich mehrere andere Spalten in der gleichen Datei sind. Ich würde einige dieser Ids grep, zum Beispiel möchte ich alles, was mit Anid, Usti, Medi, Oryz beginnt, ist es egal, ob sie in Spalte 1 oder 2 sind, aber ich möchte nur die IDs und nicht die vollständige Zeile.

versuchte ich

awk '/^Anid|/{print $1}' data 

Es ist mir nicht geben

Anid|Mycfi2_180833_Genemark.11845_g 
    Anid|Mycfi2_212664_estExt_fgenesh1_kg.C_120001 

und das gleiche von der zweiten Säule zu extrahieren Ich benutze

awk '/^Anid|/{print $2}' data 

Anid|maker-scaffold69_size108554-augustus-gene-0.130-mRNA-2 

Gibt es eine effiziente Möglichkeit, alle zu erhalten IDs beginnend mit diesen 4 Wörtern aus Spalte 1 und Spalte 2 in einer einzigen Datei?

Antwort

1

Verwenden egrep -o

egrep -o "\<(Anid|Usti|Medi|Oryz)\S*" 

Die \< impliziert, dass es der Anfang eines Wortes sein muss. Beachten Sie, dass, wenn Sie zwei Übereinstimmungen in der gleichen Zeile haben, es zwei Zeilen drucken wird (aber ich nehme an, das ist, was Sie sowieso wollen)

+0

Dank es funktioniert, ist es möglich, mehrere Muster auf diese Weise zu grep. Das war Teil meiner Frage "alles was mit Anid, Usti, Medi, Oryz anfängt". – Paul

+1

egrep -o "\ <(Anid | Usti) \ S *" ... Ich werde die Antwort aktualisieren – blackghost

Verwandte Themen