![僅保留遵循特定模式的行](https://rvso.com/image/97236/%E5%83%85%E4%BF%9D%E7%95%99%E9%81%B5%E5%BE%AA%E7%89%B9%E5%AE%9A%E6%A8%A1%E5%BC%8F%E7%9A%84%E8%A1%8C.png)
我有一個包含 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