次のような多くの情報を含む大容量ファイルfile1があります。
rs969931 C A 1.993 1.189 1.003 ..............
rs2745406 C T 1.993 1.166 1.003 ..............
rs6939431 A G 0.003 0.207 0.005 ..............
rs1233427 A G 1.990 1.150 1.001 ..............
2番目のファイルfile2には、この情報の品質が含まれています。ファイル2の行Nの値は、ファイル1の行Nの品質に対応します。
0.19893
0.94752
0.93768
0.47781
私が望むのは、ファイル2> 0.5のファイル1から行を選択することです。私が見つけることができる最も近いのはID一致の問題です(別のファイルにIDがリストされているテキストファイルから行を選択する)、ここではファイル2の値を使用していくつかの論理演算を実行する必要があります。
大容量ファイルに対して複数の作業を行う必要があるため、ファイル 2 をファイル 1 に追加し、フィルタリング後に削除するなどの面倒なソリューションを避けてください。
ベストアンサー1
paste qual.txt data.txt | awk '$1 > 0.5'
これは、最初に品質値を最初の列として含め、別のデータを別の列として含むデータを生成するために使用されますpaste
。このawk
コードは、単に最初の列(品質)が0.5より大きい行を選択して印刷します。
出力品質が不要な場合:
paste qual.txt data.txt | awk '$1 > 0.5' | cut -f 2-
与えられた例では、これが生成されます
rs2745406 C T 1.993 1.166 1.003 ..............
rs6939431 A G 0.003 0.207 0.005 ..............