すべての列に基づいて、繰り返しまたはuinq値に一意の識別子またはシーケンス番号を割り当てます。

すべての列に基づいて、繰り返しまたはuinq値に一意の識別子またはシーケンス番号を割り当てます。

重複した値を持つ入力ファイルがあり、最初の列(col1)分に基づいて各uniq値にuniq識別子を提供したいと思います。 col1 の重複値に基づいて、重複行は以前に同じ識別子を持ちます。小数点、助けてください。進んでくれてありがとう。

    Ca3CNSNP431180  2428    2435    0   TTTATttt    AT-Hook 1
    Ca3CNSNP431179  2429    2437    0   TTATTttat   AT-Hook 1
    Ca3CNSNP431178  2428    2436    0   TTTATttta   AT-Hook 1
    Ca4CNSNP431177  1384    1388    0   ATTGA   NF-YB;NF-YA;NF-YC   1
    Ca4CNSNP431176  1382    1386    0   AGATT   Myb/SANT;MYB;ARR-B  1
    Ca4CNSNP431175  1382    1386    0   AGATT   GATA;tify   1
    Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
    Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
    Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
    Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3

希望の出力:

identifier  col1    col2    col3    col4    col5    col6    col7
 000001.1   Ca3CNSNP431180  2428    2435    0   TTTATttt    AT-Hook 1
 000002.1       Ca3CNSNP431179  2429    2437    0   TTATTttat   AT-Hook 1
 000003.1       Ca3CNSNP431178  2428    2436    0   TTTATttta   AT-Hook 1
 000004.1       Ca4CNSNP431177  1384    1388    0   ATTGA   NF-YB;NF-YA;NF-YC   1
 000005.1       Ca4CNSNP431176  1382    1386    0   AGATT   Myb/SANT;MYB;ARR-B  1
 000006.1       Ca4CNSNP431175  1382    1386    0   AGATT   GATA;tify   1
 000007.1       Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
 000007.2       Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
 000008.1       Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
 000008.2       Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
 000009.1       Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
 000009.2       Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
 000009.3       Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3

答え1

短いawk解決策:

awk '{ printf "%06d.%d\t%s\n",(!a[$1]++? ++c:c),a[$1],$0 }' file
  • !a[$1]++- 最初のフィールドの固有値を確認します$1(配列のインデックスとして使用されますa)。

  • ++c-cプレフィックス各固有項目の値が増加します(小数点より前)。

  • a[$1]-サフィックス値(小数点の後) - 最初のフィールド値の発生回数を示します。$1

  • %06d.%d-%06dサイズを指す出力書式指定子整数部分数字d(前に0がついたサイズ6 06)と.%d-スケール数量(少数部)


出力:

000001.1    Ca3CNSNP431180  2428    2435    0   TTTATttt    AT-Hook 1
000002.1    Ca3CNSNP431179  2429    2437    0   TTATTttat   AT-Hook 1
000003.1    Ca3CNSNP431178  2428    2436    0   TTTATttta   AT-Hook 1
000004.1    Ca4CNSNP431177  1384    1388    0   ATTGA   NF-YB;NF-YA;NF-YC   1
000005.1    Ca4CNSNP431176  1382    1386    0   AGATT   Myb/SANT;MYB;ARR-B  1
000006.1    Ca4CNSNP431175  1382    1386    0   AGATT   GATA;tify   1
000007.1    Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
000007.2    Ca4CNSNP431174  1386    1398    0   tgaAATTTtcatt   TCR;CPP 2
000008.1    Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
000008.2    Ca4CNSNP431172  1383    1395    0   gattgAAATTttc   TCR;CPP 2
000009.1    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
000009.2    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3
000009.3    Ca3CNSNP430205  3334    3343    0   tATATAtata  AT-Hook 3

関連情報