특정 열에만 큰따옴표 삽입

특정 열에만 큰따옴표 삽입

세 번째 열의 형식을 변경해야 하는 파일이 있습니다.

다음은 .gtf 파일의 샘플 라인입니다(탭으로 구분).

chr1    CAT     gene_id=RP11-54O7.16;transcript_id=ENST00000607769.1-1;
chr1    CAT     gene_id=RP11-54O7.16;transcript_id=ENST00000607769.1-2;

등호를 제거하고 다음과 같이 유전자 및 성적표 이름 주위에 따옴표를 넣어야 합니다.

chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1";
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2";

이것이 awk내가 or 으로 성취할 수 있는 일인가 sed? 내 주요 문제는 마지막 열에 따옴표를 여러 번 삽입하는 것입니다.

답변1

이와 같이:

sed 's/=/ "/g; s/;/";/g' file.gtf

또는

sed -e 's/=/ "/g' -e 's/;/";/g' file.gtf

chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1";
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2";

답변2

$ awk '{ split($0, a , " +|[=;]", seps); '\
'print a[1] seps[1] a[2] seps[2] a[3] " \"" a[4] "\";" a[5] " \"" a[6] "\""; }' input

chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1"
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2"

답변3

주문하다

awk -v replace=' "' -v bo='"' '{gsub(/=/,replace,$0);gsub(";",bo";",$0);print}' file.txt

산출

chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1";
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2";

파이썬

#!/usr/bin/python
import re
l=open('filename','r')
for i in l:
    print i.strip().replace('=',' "').replace(';','";')

산출

chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1";
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2";

답변4

$ sed 's/=\([^;]*\)/ "\1"/g' file
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-1";
chr1    CAT     gene_id "RP11-54O7.16";transcript_id "ENST00000607769.1-2";

관련 정보