Parece um tipo de arquivo de linguagem de marcação XML ou semelhante. Esses arquivos não devem ser analisados por simples expressões regulares por medo de acordar TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚ N̐Y̡ . Você deve usar um analisador específico para essa marcação e sua linguagem de script favorita.
Isso se parece com os dados do OMIM ou do HPO. Nesse caso, você deve conseguir arquivos de texto simples e simplificar as coisas. Se você não puder e realmente precisar analisar esse arquivo, poderá fazer isso em perl:
perl -lne '/<.*?>([^<>]+)/ && print $1' foo.txt
No entanto, isso será interrompido se você tiver várias tags por linha ou se o conteúdo da tag puder se estender por várias linhas ou se os dados da tag puderem conter >
ou <
. Se todas as suas informações forem sempre entre <category="whatever">blah blah</category>
, você poderá obter tudo de forma mais robusta (incluindo conteúdo de várias linhas de linha e incorporado <
ou >
):
#!/usr/bin/env perl
## Set the start and end tags
$end="</category>";
$start="<category=.*?>";
## Read through the file line by line
while(<>){
## set $a to one if the current line matches $start
$a=1 if /$start/;
## If the current line matches $start, capture any relevant content.
## I am also removing any $start or $end tags if present.
if(s/($start)*(.+)($end)*/$2/){
push @lines,$2 if $a==1;
}
## If the current line matches $end, capture any relevant content,
## print what we have saved so far, set $a back to 0 and empty the
## @lines array
if(/$end/){
map{s/$end//;}@lines;
print "@lines\n";
@lines=();
$a=0
};
}
Salve este script como foo.pl
ou qualquer outro, torne-o executável e execute-o no seu arquivo:
./foo.pl file.txt
Por exemplo:
$ cat file.txt
<category="SpecificDisease">Type II
human complement C2 deficiency</category>
<category="Modifier">Huntington disease</category>
<category="CompositeMention">hereditary breast < and ovarian cancer</category>
<category="DiseaseClass">myopathy > cardiopathy</category>
$ ./foo.pl file.txt
Type II human complement C2 deficiency
Huntington disease
hereditary breast < and ovarian cancer
myopathy > cardiopathy
Mais uma vez, eu enfatizo que se (o que é muito provável) seu arquivo é mais complexo que o exemplo acima, isso falhará e métodos mais sofisticados serão necessários.