계통발생수 파일에서 DNA 서열 이름을 복사하고 종 이름을 추가합니다.

계통발생수 파일에서 DNA 서열 이름을 복사하고 종 이름을 추가합니다.

다음과 같은 파일에서:

(AJirio_TR15329|c4_g1_i4|m.30470:0.00230,(AJama_TR16613|c5_g2_i2|m.30203:0.00171,(AJkago_TR11651|c5_g2_i1|m.3847:0.00057,AJtok_TR11413|c7_g1_i1|m.3527:0.00033)1.00    :0.00080)0.94    :0.00085,Atab_TR15364|c0_g1_i1|m.4073:0.27697);

이 파일을 가져와야 합니다.

AJirio_TR15329|c4_g1_i4|m.30470"AJirio"  
AJama_TR16613|c5_g2_i2|m.30203"AJama"
AJkago_TR11651|c5_g2_i1|m.3847"AJkago"
AJtok_TR11413|c7_g1_i1|m.3527"AJtok"
Atab_TR15364|c0_g1_i1|m.4073"Atab"

따라서 기본적으로 계통발생수에서 DNA 서열의 이름을 추출하고 여기에 종 이름을 따옴표(AJirio, AJkama..)로 추가합니다.

답변1

Awk해결책:

awk -v RS=',' -F':' '{ 
           sub(/^\(/, "", $1); 
           printf "%s\042%s\042\n", $1, substr($1, 1, index($1,"_")-1) 
       }' file
  • RS=','- ,레코드 구분자로 처리됩니다.
  • -F':'- :필드 구분자로 처리됩니다.
  • sub(/^\(/, "", $1)- 첫 번째 필드에서 선행 대괄호를 제거합니다.$1
  • \042- 큰따옴표 문자에 대한 8진수 ASCII 코드"
  • substr($1, 1, index($1,"_")-1)- 발췌종 이름첫 번째 필드로 시작(시작 위치부터 char 1의 첫 번째 발생까지 _)

산출:

AJirio_TR15329|c4_g1_i4|m.30470"AJirio"
AJama_TR16613|c5_g2_i2|m.30203"AJama"
AJkago_TR11651|c5_g2_i1|m.3847"AJkago"
AJtok_TR11413|c7_g1_i1|m.3527"AJtok"
Atab_TR15364|c0_g1_i1|m.4073"Atab"

답변2

이것은 당신이 원하는 것을 얻는 것 같습니다 :

입력 파일:

$ cat input
(AJirio_TR15329|c4_g1_i4|m.30470:0.00230,(AJama_TR16613|c5_g2_i2|m.30203:0.00171,(AJkago_TR11651|c5_g2_i1|m.3847:0.00057,AJtok_TR11413|c7_g1_i1|m.3527:0.00033)1.00    :0.00080)0.94    :0.00085,Atab_TR15364|c0_g1_i1|m.4073:0.27697);

입력을 출력으로 변환하는 스크립트입니다. 이 스크립트는 tr쉼표를 줄 바꿈으로 변환한 다음 sed모든 공백과 대괄호를 제거하고 :한 줄에서 a 뒤의 모든 것을 제거하는 데 사용된 다음 해당 줄을 인쇄하는 데 사용되고 그 뒤에 따옴표가 오고 awk첫 번째 앞에 텍스트 |문자가 옵니다. 마지막은 sed마지막 것 이후의 모든 것을 다듬고 _뒤에 큰따옴표를 추가하는 데 사용됩니다.

$ cat script.sh
#!/bin/bash

input="${1}"
output="${2}"

cat "${input}" | tr ',' '\n' |
    sed -e 's/ //g' -e 's/[()]//g' -e 's/:.*$//' |
    awk -F'|' '{ print $0"\""$1 }' |
    sed -e 's/_[^_][^_]*$/"/' > "${output}"

스크립트를 실행합니다:

$ bash script.sh input output

출력에 유의하세요.

$ cat output
AJirio_TR15329|c4_g1_i4|m.30470"AJirio"
AJama_TR16613|c5_g2_i2|m.30203"AJama"
AJkago_TR11651|c5_g2_i1|m.3847"AJkago"
AJtok_TR11413|c7_g1_i1|m.3527"AJtok"
Atab_TR15364|c0_g1_i1|m.4073"Atab"

관련 정보