入力ファイルは次のとおりです。
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
chr4 8 C 400
実際のファイルが大きすぎて処理できないため、特定の範囲内で染色体(1列)と位置(2列)でフィルタリングして、より小さなファイルを出力したいと思います。
chr4
たとえば、場所3から7までフィルタリングするLinuxコマンド(sed、awk、grepなど)を探しています。希望の最終出力は次のとおりです。
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
元のファイルを変更したくありません。
ベストアンサー1
潜在的にソートされていない入力ファイルの解決策:
sort -k1,1 -k2,2n file | awk '$1=="chr4" && $2>2 && $2<8'
出力:
chr4 3 C 435
chr4 4 A 223
chr4 5 T 400
chr4 6 G 300
chr4 7 G 340
入力ファイルがソートされている場合は、以下を使用すれば十分です。
awk '$1=="chr4" && $2>2 && $2<8' file