
重複値を持つこのような入力ファイルがあります。最初の列 (col1) に基づいて各一意の値に一意の識別子を与えたいのですが、重複行の最小値は、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 番目のフィールドの一意の値をチェックします$1
(配列のインデックスとして使用されますa
)++c
-c
は接頭辞一意のエントリごとに増加する値(小数点の前)a[$1]
-サフィックス値(小数点以下) - 1番目のフィールド値の出現回数を指します$1
%06d.%d
- 出力フォーマット指定子。%06d
サイズを指す。整数部分数字d
(先頭にゼロが付いた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