Eu tenho um arquivo parecido com este:
gene ID protein
Solyc06g062540 (Z) PYROPHOSPHATASE 3 (PTHR20889:SF0)
Solyc10g075050 ALBUMIN SUPERFAMILY (PTHR33076:SF11)
Solyc07g061760 SUBFAMILY (PTHR24177:SF35)
O arquivo é delimitado por tabulações; há uma guia entre a primeira coluna (ID do gene) e a segunda coluna (nome da proteína). (O nome da proteína pode conter espaços, mas não tabulações.) O nome da proteína contém uma string entre parênteses, por exemplo, (PTHR33076:SF11)
; esta é a proteínaEU IA. Quero manter a primeira coluna e excluir tudo na segunda coluna, exceto o ID da proteína (e seus parênteses). Então a saída ficaria assim:
Solyc06g062540 (PTHR20889:SF0)
Solyc10g075050 (PTHR33076:SF11)
Solyc07g061760 (PTHR24177:SF35)
Como posso fazer isso? Marquei todos os IDs entre parênteses usando a função "mark" e inserindo (\w+\d+:\w+\d+)
para destacar todos os IDs entre parênteses, mas não consigo manipular. Como observação, alguns dos nomes de proteínas possuem outras strings entre parênteses (por exemplo, veja a primeira linha, onde o nome da proteína contém, (Z)
bem como o valor de ID que desejo). Eu não quero ficar com isso.
Responder1
Você pode fazer isso pesquisando e substituindo uma expressão regular. Pressione Ctrl+ Hpara abrir a caixa de diálogo Substituir. Certifique-se de que o modo de pesquisa esteja Regular Expression
.
Encontre o que:
(^[^\t\r\n]+\t)[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
Substituir com:
\1\2
Explicação do padrão:
[^\t\r\n]+
é qualquer sequência de caracteres que não contém tabulação, nova linha ou retornos de carro. Isso deve corresponder apenas ao texto em uma coluna do seu arquivo.
^[^\t\r\n]+
corresponde ao conteúdo da primeira coluna porque o entrelinha ^
limita a correspondência ao início de uma linha.
O primeiro grupo de captura (^[^\t\r\n]+\t)
corresponde ao conteúdo do primeiro campo e da guia seguinte.
[^\t\r\n]+(\(\w+\d+:\w+\d+\))[^\t\r\n]*
corresponde ao conteúdo do segundo campo e corresponde apenas se a expressão entre parênteses estiver presente.
O segundo grupo de captura (\(\w+\d+:\w+\d+\))
corresponde à expressão entre parênteses.
O padrão de substituição \1\2
retorna o primeiro e o segundo grupos de captura. Isso exclui efetivamente o texto ao redor do segundo campo porque essa parte da correspondência não está incluída em um grupo de captura.
Responder2
Se o ID da proteína (entre parênteses) for sempre a última coisa na linha (como você mostrou), deve ser bom o suficiente para procurar \t.*(
(ou possivelmente \t[^\r\n]*(
) e substituí-lo por \t(
.