다음과 같은 파일이 있습니다.
gene ID protein
Solyc06g062540 (Z) PYROPHOSPHATASE 3 (PTHR20889:SF0)
Solyc10g075050 ALBUMIN SUPERFAMILY (PTHR33076:SF11)
Solyc07g061760 SUBFAMILY (PTHR24177:SF35)
파일은 탭으로 구분됩니다. 첫 번째 열(유전자 ID)과 두 번째 열(단백질 이름) 사이에 탭이 있습니다. (단백질 이름에는 공백이 포함될 수 있지만 탭은 포함될 수 없습니다.) 단백질 이름에는 괄호 안에 문자열이 포함됩니다(예: (PTHR33076:SF11)
; 이것이 바로 단백질이다ID. 첫 번째 열을 유지하고 두 번째 열에서 단백질 ID(및 해당 괄호)를 제외한 모든 항목을 삭제하고 싶습니다. 따라서 출력은 다음과 같습니다.
Solyc06g062540 (PTHR20889:SF0)
Solyc10g075050 (PTHR33076:SF11)
Solyc07g061760 (PTHR24177:SF35)
어떻게 해야 하나요? "표시" 기능을 사용하여 괄호 안의 ID를 모두 강조표시하도록 입력했는데 (\w+\d+:\w+\d+)
괄호 안의 ID를 모두 표시했지만 조작할 수 없습니다. 참고로 일부 단백질 이름에는 괄호 안에 다른 문자열이 있습니다(예: 단백질 이름에 (Z)
내가 원하는 ID 값과 함께 포함된 첫 번째 행 참조). 나는 그것들을 보관하고 싶지 않습니다.
답변1
정규식 검색 및 바꾸기를 사용하여 이를 수행할 수 있습니다. Ctrl+를 눌러 H바꾸기 대화 상자를 엽니다. 검색 모드가 인지 확인하세요 Regular Expression
.
무엇을 찾다:
(^[^\t\r\n]+\t)[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
다음으로 교체:
\1\2
패턴 설명:
[^\t\r\n]+
탭, 개행 또는 캐리지 리턴을 포함하지 않는 문자열입니다. 이는 파일의 한 열에 있는 텍스트와만 일치해야 합니다.
^[^\t\r\n]+
^
선행은 일치 항목을 줄의 시작으로 제한 하기 때문에 첫 번째 열의 내용과 일치합니다 .
첫 번째 캡처링 그룹은 (^[^\t\r\n]+\t)
첫 번째 필드 및 다음 탭의 내용과 일치합니다.
[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
두 번째 필드의 내용과 일치하며 괄호 식이 있는 경우에만 일치합니다.
두 번째 캡처링 그룹은 (\(\w+\d+:\w+\d+\))
괄호 안의 표현식과 일치합니다.
교체 패턴은 \1\2
첫 번째 및 두 번째 캡처링 그룹을 반환합니다. 일치하는 부분이 캡처 그룹에 포함되지 않기 때문에 두 번째 필드의 주변 텍스트가 효과적으로 삭제됩니다.
답변2
\t.*(
(괄호 안에 있는) 단백질 ID가 항상 줄의 마지막 항목인 경우(표시한 대로), 검색하여 (또는 가능하면 \t[^\r\n]*(
) 로 바꾸면 충분합니다 \t(
.