sed를 사용하여 한 줄에서 한 번에 두 개의 텍스트를 추출합니다.

로봇 스콧

좋아, 비슷한 답변을 찾았지만 sed / grep / awk fu가 너무 가난하여 내 작업에 적응할 수 없었습니다. 즉, "test.gff"파일이 주어지면 :

accn|CP014704   RefSeq  CDS 403 915 .   +   0   ID=AZ909_00020;locus_tag=AZ909_00020;product=transcriptional regulator
accn|CP014704   RefSeq  CDS 928 2334    .   +   0   ID=AZ909_00025;locus_tag=AZ909_00025;product=FAD/NAD(P)-binding oxidoreductase
accn|CP014704   RefSeq  CDS 31437   32681   .   +   0   ID=AZ909_00145;locus_tag=AZ909_00145;product=gamma-glutamyl-phosphate reductase;gene=proA
accn|CP014704   RefSeq  CDS 2355    2585    .   +   0   ID=AZ909_00030;locus_tag=AZ909_00030;product=hypothetical protein

두 개의 값을 추출하고 싶습니다. 1) "ID ="의 오른쪽에 세미콜론까지, 2) "product ="오른쪽에있는 텍스트 (줄 끝까지) 또는 세미콜론 (다음 중 하나를 볼 수 있으므로 행에는 "gene ="값도 있습니다.

그래서 나는 다음과 같은 것을 원합니다.

ID    product
AZ909_00020    transcriptional regulator
AZ909_00025    FAD/NAD(P)-binding oxidoreductase
AZ909_00145    gamma-glutamyl-phosphate reductase

이것은 내가 얻은 것입니다.

printf "ID\tproduct\n"

sed -nr 's/^.*ID=(.*);.*product=(.*);/\1\t\2\p/' test.gff

감사!

Redneb

다음을 시도하십시오.

sed 's/.*ID=\([^;]*\);.*product=\([^;]*\).*/\1\t\2/' test.gff

당신의 시도에 비해 제품에 맞는 방식을 변경했습니다. 필드가 ;또는로 끝나는 지 알 수 없기 때문에 EOL가능한 가장 많은 비 ;문자 수와 일치합니다 . 또한 .*제품 뒤에 남은 문자와 일치하도록 끝에를 추가했습니다 . 이렇게하면 대체를 수행 할 때 전체 라인이 일치하고 완전히 다시 작성할 수 있습니다.

좀 더 강력한 것을 원한다면 여기에 펄 한 줄짜리가 있습니다.

perl -nle '($id)=/ID=([^;]*)/; ($prod)=/product=([^;]*)/; print "$id\t$prod"' test.gff

정규식을 사용하여 두 필드를 개별적으로 추출합니다. 필드가 역순으로 표시 되더라도 올바르게 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VBA를 사용하여 두 개의 동일한 문자 사이의 문자열에서 텍스트 추출

분류에서Dev

SED를 사용하여 텍스트 파일의 값에서 특정 형식을 생성합니다 (한 줄씩).

분류에서Dev

파이썬을 사용하여 시작과 끝으로 두 개의 식별자를 통해 거대한 텍스트 파일에서 줄 추출

분류에서Dev

BSD의 csh에서 sed를 사용하여 한 줄을 두 줄로 바꾸는 방법은 무엇입니까?

분류에서Dev

Sed / Awk를 사용하여 줄의 처음 세 개의 고유 한 인스턴스를 추출합니다.

분류에서Dev

가능한 모든 조합에서 한 번에 두 개의 변수를 사용하여 루핑-UNIX

분류에서Dev

Java에서 줄 번호를 사용하여 텍스트 파일에서 정확한 텍스트 줄을 추출하는 방법은 무엇입니까?

분류에서Dev

두 개의 열을 만듭니다. 첫 번째는 한 단어이고 다른 하나는 awk를 사용하여 해당 줄에서 남은 모든 텍스트입니다.

분류에서Dev

Unsemantic을 사용하여 두 개의 서로 다른 글꼴 크기를 한 줄에 배치하는 방법

분류에서Dev

sed를 사용하여 한 줄의 끝을 다음 줄의 시작 부분에 추가합니다.

분류에서Dev

파일에서 일반 텍스트 줄을 복사하고 중간 줄 접두사를 사용하여 동일한 파일에 추가하거나 중간 줄 접두사를 제거합니다.

분류에서Dev

텍스트 파일에서 "OK"의 첫 번째 항목을 검색하고 동일한 줄에서 처음 2 개 문자를 추출하여 UFT / VB 스크립팅에서 변수로 저장합니다.

분류에서Dev

sed를 사용하여 두 텍스트 줄 사이의 텍스트 추출

분류에서Dev

동일한 IP와 다른 SSH 포트 번호를 사용하여 두 개의 다른 Linux SSH 호스트 (Docker)에 SSH를 사용하는 방법

분류에서Dev

sed 명령-두 번째 단어의 들여 쓰기를 유지하면서 한 줄에있는 두 단어를 두 단어로 바꿉니다.

분류에서Dev

두 개의 버튼을 클릭 한 후 Textview에 두 개의 다른 텍스트를 표시하는 방법

분류에서Dev

한 텍스트 필드에서 다른 텍스트 필드로 텍스트를 전송하고 싶습니다. JAVASCRIPT의 첫 번째 텍스트 필드에서 두 번째 텍스트 필드로, 두 번째에서 세 번째로, 세 번째에서 첫 번째로

분류에서Dev

Bash를 사용하여 ASCII 파일의 한 줄에서 두 번째 문자열 인스턴스를 바꿉니다.

분류에서Dev

선택한 텍스트를 div에서 텍스트 필드로 복사하려면 텍스트를 두 번 클릭합니다.

분류에서Dev

필터를 사용하여 한 번에 두 문자를 교체 ()하는 방법 및 VueJS 컨텍스트에서 별도의 배지를 갖는 방법

분류에서Dev

.txt 파일에서 sed를 사용하여 "공백"없이 거대한 한 줄로 줄을 병합합니다.

분류에서Dev

sed를 사용하여 한 줄에 여러 문자열의 접두사 및 접미사

분류에서Dev

자바의 캘린더 클래스를 사용하여 한 번에 두 개의 다른 요일에 대한 요일을 인쇄하는 방법

분류에서Dev

한 줄에 걸쳐 두 문자열 (포함) 사이의 텍스트를 여러 번 삭제 (macOS, BSD)

분류에서Dev

한 줄을 사용하여 git에서 두 개의 비 연속 커밋을 어떻게 스쿼시합니까?

분류에서Dev

한 번에 3 줄의 텍스트를 한 줄에 표시하려면 어떻게해야합니까?

분류에서Dev

자바 스크립트를 사용하여 한 번에 두 개 이상의 다른 문자열을 바꿀 수 있습니까?

분류에서Dev

한 번에 두 개의 jTextField의 텍스트를 어떻게 얻을 수 있습니까?

분류에서Dev

두 개의 편집 텍스트를 합하고 세 번째 텍스트에서 결과를 얻습니다.

Related 관련 기사

  1. 1

    VBA를 사용하여 두 개의 동일한 문자 사이의 문자열에서 텍스트 추출

  2. 2

    SED를 사용하여 텍스트 파일의 값에서 특정 형식을 생성합니다 (한 줄씩).

  3. 3

    파이썬을 사용하여 시작과 끝으로 두 개의 식별자를 통해 거대한 텍스트 파일에서 줄 추출

  4. 4

    BSD의 csh에서 sed를 사용하여 한 줄을 두 줄로 바꾸는 방법은 무엇입니까?

  5. 5

    Sed / Awk를 사용하여 줄의 처음 세 개의 고유 한 인스턴스를 추출합니다.

  6. 6

    가능한 모든 조합에서 한 번에 두 개의 변수를 사용하여 루핑-UNIX

  7. 7

    Java에서 줄 번호를 사용하여 텍스트 파일에서 정확한 텍스트 줄을 추출하는 방법은 무엇입니까?

  8. 8

    두 개의 열을 만듭니다. 첫 번째는 한 단어이고 다른 하나는 awk를 사용하여 해당 줄에서 남은 모든 텍스트입니다.

  9. 9

    Unsemantic을 사용하여 두 개의 서로 다른 글꼴 크기를 한 줄에 배치하는 방법

  10. 10

    sed를 사용하여 한 줄의 끝을 다음 줄의 시작 부분에 추가합니다.

  11. 11

    파일에서 일반 텍스트 줄을 복사하고 중간 줄 접두사를 사용하여 동일한 파일에 추가하거나 중간 줄 접두사를 제거합니다.

  12. 12

    텍스트 파일에서 "OK"의 첫 번째 항목을 검색하고 동일한 줄에서 처음 2 개 문자를 추출하여 UFT / VB 스크립팅에서 변수로 저장합니다.

  13. 13

    sed를 사용하여 두 텍스트 줄 사이의 텍스트 추출

  14. 14

    동일한 IP와 다른 SSH 포트 번호를 사용하여 두 개의 다른 Linux SSH 호스트 (Docker)에 SSH를 사용하는 방법

  15. 15

    sed 명령-두 번째 단어의 들여 쓰기를 유지하면서 한 줄에있는 두 단어를 두 단어로 바꿉니다.

  16. 16

    두 개의 버튼을 클릭 한 후 Textview에 두 개의 다른 텍스트를 표시하는 방법

  17. 17

    한 텍스트 필드에서 다른 텍스트 필드로 텍스트를 전송하고 싶습니다. JAVASCRIPT의 첫 번째 텍스트 필드에서 두 번째 텍스트 필드로, 두 번째에서 세 번째로, 세 번째에서 첫 번째로

  18. 18

    Bash를 사용하여 ASCII 파일의 한 줄에서 두 번째 문자열 인스턴스를 바꿉니다.

  19. 19

    선택한 텍스트를 div에서 텍스트 필드로 복사하려면 텍스트를 두 번 클릭합니다.

  20. 20

    필터를 사용하여 한 번에 두 문자를 교체 ()하는 방법 및 VueJS 컨텍스트에서 별도의 배지를 갖는 방법

  21. 21

    .txt 파일에서 sed를 사용하여 "공백"없이 거대한 한 줄로 줄을 병합합니다.

  22. 22

    sed를 사용하여 한 줄에 여러 문자열의 접두사 및 접미사

  23. 23

    자바의 캘린더 클래스를 사용하여 한 번에 두 개의 다른 요일에 대한 요일을 인쇄하는 방법

  24. 24

    한 줄에 걸쳐 두 문자열 (포함) 사이의 텍스트를 여러 번 삭제 (macOS, BSD)

  25. 25

    한 줄을 사용하여 git에서 두 개의 비 연속 커밋을 어떻게 스쿼시합니까?

  26. 26

    한 번에 3 줄의 텍스트를 한 줄에 표시하려면 어떻게해야합니까?

  27. 27

    자바 스크립트를 사용하여 한 번에 두 개 이상의 다른 문자열을 바꿀 수 있습니까?

  28. 28

    한 번에 두 개의 jTextField의 텍스트를 어떻게 얻을 수 있습니까?

  29. 29

    두 개의 편집 텍스트를 합하고 세 번째 텍스트에서 결과를 얻습니다.

뜨겁다태그

보관