2 つの数値列に基づいて並べ替え

2 つの数値列に基づいて並べ替え

私はchr(列2)と位置(列3)に基づいて低いものから高いものの順に遺伝子ファイルをソートしようとしています。私のテーブルは大きなファイルからです:

SNP CHR BP  A1  A2  effect_allele_frequency BETA    standard_error  P
rs10875231  1   100000012   T   G   0.405   -0.0456807  0.02260471  0.04335677
rs6678176   1   100000827   C   T   0.383   0.02553138  0.02287662  0.2645817
rs78590530  1   100000948   A   G   0.016   0.171376    0.08757958  0.05035017
rs149636485 1   100001060   A   G   0.004   -0.03363731 0.1819208   0.8529224

他の列を無視して各文字を個別に実行しながら、CHR(1から22まで)を低い順に並べ替えたいと思います。このソートコマンドを試しました

sort -t $'\t' -nk3 myfile.tsv | sort -t $'\t' -nk2  > test.txt

chr(列2)には順序がありますが、位置(列3)は提供されません。最初の列が次を妨げているようです。

SNP CHR BP  A1  A2  effect_allele_frequency BETA    standard_error  P
rs1000033   1   226580387   G   T   0.416   0.02958699  0.02295015  0.1971771
rs1000050   1   162736463   T   C   0.378   0.06136397  0.02293639  0.007468015
rs1000070   1   222359612   C   T   0.381   0.02563547  0.02294139  0.2638107
rs1000073   1   157255396   G   A   0.387   -0.01470793 0.02273634  0.517414
rs1000085   1   66857915    C   G   0.024   -0.03536382 0.07555889  0.6394446
rs1000127   1   63432716    C   T   0.157   0.003052272 0.03045933  0.919875

2列でソートしてから3列のみでソートするにはどうすればよいですか?

答え1

1回の呼び出しですべてのキーをソートされた順序で指定し、終了sortフィールドを指定する必要があります。

sort -n -k2,2 -k3,3

sort -n -k3スペースをスキップした後、フィールド 3 から始まる数字で構成された数字を比較してソートを示します。別のフィールドにパイプされsort -n -k2、2番目とそれ以降のフィールドの内容に基づいてソートされます(最大非数字)。しかし、それはあなたの結果を説明しません...

-n-kとの説明を参照してください。sort仕様もっと学ぶ。

関連情報