Behalten Sie nur Linien bei, die einem bestimmten Muster folgen

Behalten Sie nur Linien bei, die einem bestimmten Muster folgen

Ich habe eine Datei mit 5,5 Millionen Zeilen.

Beispiel:

chr1    10000   10468   +   (TAACCC)n   Simple_repeat   Simple_repeat
chr1    10468   11447   -   TAR1    Satellite   telo
chr1    11504   11675   -   L1MC5a  LINE    L1
chr1    11677   11780   -   MER5B   DNA hAT-Charlie
chr10_GL383545v1_alt    11877   11980   -   Alu ERV1
chr11_BL383595v1_alt    12077   12980   -   Alu ERV1
chr3    11504   11675   -   L1MC5a  LINE    L1

Ich möchte nur die Zeilen behalten, die nicht _in der ersten Spalte stehen

Die Ausgabe sähe etwa so aus:

chr1    10000   10468   +   (TAACCC)n   Simple_repeat   Simple_repeat
chr1    10468   11447   -   TAR1    Satellite   telo
chr1    11504   11675   -   L1MC5a  LINE    L1
chr1    11677   11780   -   MER5B   DNA hAT-Charlie
chr3    11504   11675   -   L1MC5a  LINE    L1

Ich weiß nicht, wie viele meiner unerwünschten Zeilen vorhanden sind. Ich würde am liebsten verwenden, awkaber normale Bash-Befehle sind auch in Ordnung.

Antwort1

awkeignet sich am besten für den Umgang mit Spalten

awk '$1 !~ /_/' file

!~ermöglicht die Überprüfung, ob etwas nicht dem Muster entspricht


Mitgrep

grep -v '^\S*_' file

oder, falls \Snicht erkannt,

grep -v '^[^[:space:]]*_' file

verwandte Informationen