私は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
仕様もっと学ぶ。