![모든 열을 기반으로 반복 또는 uinq 값에 고유 식별자 또는 시퀀스 번호를 할당합니다.](https://linux55.com/image/122177/%EB%AA%A8%EB%93%A0%20%EC%97%B4%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EB%B0%98%EB%B3%B5%20%EB%98%90%EB%8A%94%20uinq%20%EA%B0%92%EC%97%90%20%EA%B3%A0%EC%9C%A0%20%EC%8B%9D%EB%B3%84%EC%9E%90%20%EB%98%90%EB%8A%94%20%EC%8B%9C%ED%80%80%EC%8A%A4%20%EB%B2%88%ED%98%B8%EB%A5%BC%20%ED%95%A0%EB%8B%B9%ED%95%A9%EB%8B%88%EB%8B%A4..png)
중복 값이 있는 입력 파일이 있고 첫 번째 열(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이 붙은 크기 606
) 및.%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