僅保留遵循特定模式的行

僅保留遵循特定模式的行

我有一個包含 550 萬行的文件。

例子:

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

相關內容