Оставить только те строки, которые следуют определенному шаблону

Оставить только те строки, которые следуют определенному шаблону

У меня есть файл с 5,5 миллионами строк.

Пример:

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

Мне интересно сохранить только те строки, которые не имеют _в первом столбце

Вывод будет примерно таким:

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

Я не знаю, сколько у меня нежелательных строк. Я бы предпочел использовать, awkно обычные команды bash тоже подойдут.

решение1

awkлучше всего подходит для работы со столбцами

awk '$1 !~ /_/' file

!~позволяет проверить, не соответствует ли что-то шаблону


Сgrep

grep -v '^\S*_' file

или, если \Sне распознан,

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

Связанный контент