2017-07-20 35 views
3

我有>百米行的文件,並希望通過一些標準對其進行過濾:篩選基於特定的列一個大文件在bash

$ wc -l s1bam.bed 
104797540 s1bam.bed 

$ head -n 3 s1bam.bed 
chr1 14688 14979 NB501800:50:H3NW5BGX3:2:22310:19560:5036/1 3 + 
chr1 14688 14979 NB501800:50:H3NW5BGX3:3:13501:3458:17919/1 3 + 
chr1 14727 15018 NB501800:50:H3NW5BGX3:2:22310:19560:5036/2 3 - 

我想輸出什麼是第五個字段值>=20!=255(例如右邊的第二個字段)。如何在Bash中實現它?

+0

很好的解釋,但本質上所示着力解決的主要問題......問題的標題的精確搜索提供了大量的提示使用'awk' ... – Sundeep

回答

3

您可以用awk此:

awk '$5 >= 20 && $5 != 255' file 
+1

謝謝@anubhava! –

+0

再次感謝您!我想知道是否有一個簡單的方法來表格$ 5字段並在終端中打印出來,以便我可以選擇一個好的截止點。 –

+0

如果你想僅在上述條件下打印'$ 5',那麼使用:awk'$ 5> = 20 && $ 5!= 255 {print $ 5}'file'如果你不想要任何條件,那麼就使用'awk' {print $ 5}'文件' – anubhava