2016-11-04 3 views
-1

Ich möchte alle Zeilen aus einer Textdatei in Linux ziehen, die eine bestimmte Zahl (in diesem Fall 9913) in einer bestimmten Spalte (Spalte 4) enthalten . Dies ist eine tabulatorgetrennte Datei, daher nenne ich das eine Spalte, obwohl ich mir nicht sicher bin.Linux - Setzen von Zeilen, die eine Zeichenfolge in einer bestimmten Spalte in einer neuen Datei enthalten

In einigen Fällen gibt es nur eine Zahl in Spalte 4, aber in anderen Zeilen gibt es mehrere Zahlen in dieser Spalte (z. B. 9913; 4444; 5555). Ich möchte Zeilen erhalten, für die in der 4. Spalte die Nummer 9913 erscheint (ob es die einzige Nummer oder eine Liste ist). Wie lege ich alle Zeilen, die in Spalte 4 die Nummer 9913 enthalten, in eine eigene Datei? Hier

ist ein Beispiel dafür, was ich versucht habe:

cat file.txt | grep 9913> NEWFILE.TXT

Ergebnis ist eine Mischung aus den folgenden:

CDR1as CDR1as ENST00000003100.8 9913 AAA-GGCAGCAAGGGACUAAAA (Dateien, die ich will)

CDR1as CDR1as ENST00000399139.1 9606 GUCCCCA .. .............. (Datei ex. Ich will nicht)

Ich erhalte keine Ergebnisse beim Aufruf einer bestimmten Spalte. Von dem Helfer unten gezeigt, erkennt der Code die Spalten nicht, die ich denke, und ich bekomme leere Dateien, wenn ich awk benutze.

awk '$ 4 == "9913"' ​​file.txt> newfile.txt

gibt mir keine Übertragung von Daten in eine neue Datei.

Dank

+1

Zeigen Sie, was Sie bisher versucht haben. –

+0

Doppelte Eingabe - http://stackoverflow.com/questions/2957094/only-print-lines-where-the-second-field-matches-some-criteria –

+0

möchten Sie den zweiten Fall (ex. 9913; 4444; 5555) auch ausgewählt werden? Was ist Ihr Feldtrennzeichen? – karakfa

Antwort

0

Dies ist eine Möglichkeit, es zu tun

awk '$4 == "9913" {print $0}' file.txt > newfile.txt 

oder nur

awk '$4 == "9913"' file.txt > newfile.txt 
+0

Beachten Sie, dass '{print $ 0}' hier überflüssig ist, da es das Standardverhalten von 'awk' ist. Also 'awk' $ 4 == "9913" 'Datei reicht aus. – fedorqui

+0

Aktualisiert meine Antwort. Danke, dass du darauf hingewiesen hast – usha

+0

Danke. Ich habe gerade oben bearbeitet. Aus irgendeinem Grund funktioniert das nicht für meine Daten, obwohl ich es auch in anderen Beiträgen gesehen habe. Ich bekomme keine Zeilen in die neue Datei übertragen, wenn ich awk benutze – ngross13

Verwandte Themen