
我有這樣的輸入文件,它有重複的值,我想根據第一列(col1)分鐘為每個uniq值提供uniq標識符,根據col1的重複值,重複行在小數點前具有相同的標識符,任何幫助guyz,謝謝進步。
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]
-後綴value(小數點後)- 指向第一個欄位值出現的次數$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