다음 형식의 탭으로 구분된 필드가 포함된 파일이 있습니다.
2-micron 251 1523 R0010W . + SGD gene . ID=R0010W;Name=R0010W;gene=FLP1;Alias=FLP1;Ontology_term=GO:0003690,GO:0003697,GO:0005575,GO:0008301,GO:0009009,GO:0042150;Note=Site-specific%20recombinase%20encoded%20on%20the%202-micron%20plasmid%2C%20required%20for%202-micron%20plasmid%20propagation%20as%20part%20of%20a%20plasmid%20amplification%20system%20that%20compensates%20for%20any%20copy%20number%20decreases%20caused%20by%20missegregation%20events;dbxref=SGD:S000029654;orf_classification=Verified 0
2개의 열(4번째와 마지막 열)을 추출해야 하는데 성공적으로 수행했습니다. 하지만 더 많은 세부 정보가 포함된 열에서 특정 정보를 추출해야 합니다. 예를 들어 gene=foo
열 10에서 추출 해야 합니다 .
따라서 결과적으로 4열 10열과 마지막 열 총 3열의 유전자 정보를 원합니다. 어떻게 해야 하나요?
답변1
이것이 Perl 방식입니다:
$ perl -lane '$F[9]=~s/.*(gene=.+?;).*/$1/; print "$F[3]\t$F[9]\t$F[$#F]"' file
R0010W gene=FLP1; 0
공백에 대한 자동 필드 분할을 활성화하여 -a
필드를 배열에 저장합니다 @F
. 이는 공백과 탭에서 작동합니다. 각 호출에 개행 문자를 추가하고 -l
주어진 스크립트를 적용하여 입력 파일을 한 줄씩 읽습니다.print()
-n
-e
스크립트는 첫 번째 필드까지 10번째 필드(배열은 0에서 시작하므로 10번째 필드는 $F[9]
) 의 모든 내용을 삭제합니다 . 그런 다음 네 번째, 마지막, 나머지 열 번째를 인쇄합니다.gene=
;