Можно временно удалить/запретить конфетку repo путем добавления - disablerepo = (reponame) к вкусной строке.
yum --disablerepo=some-repository install some-package
К сожалению, это - единственный способ сделать это с yum/sudo
Это похоже на своего рода XML или подобный файл языка разметки. Такие файлы не должны быть проанализированы простыми регулярными выражениями из страха пробуждения К ͇̹̺ͅƝ ̴ȳ ̳ TH̘E ͖̈́̉ ͠P ̯͍̭ O ̚ N̐Y ̡. Необходимо использовать синтаксический анализатор, специфичный для той разметки и любимого языка сценариев вместо этого.
Это похоже на OMIM или данные HPO, в этом случае, необходимо смочь получить простые текстовые файлы и упростить вещи. Если Вы не можете и действительно действительно должны проанализировать этот файл, Вы могли бы сделать это в жемчуге:
perl -lne '/<.*?>([^<>]+)/ && print $1' foo.txt
Однако это повредится, если у Вас будет несколько тегов на строку, или если содержание Вашего тега может охватить несколько строк или если данные тега могут содержать >
или <
. Если вся Ваша информация всегда между <category="whatever">blah blah</category>
, можно добраться, все более надежно (включая много строку отмечают содержание и встроенный <
или >
):
#!/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
};
}
Сохраните этот сценарий как foo.pl
или что бы то ни было, сделайте это исполняемым файлом и выполните его на своем файле:
./foo.pl file.txt
Например:
$ 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
Еще раз, хотя, я подчеркиваю, что, если (который вероятен) Ваш файл будет более сложным, чем пример выше, то это перестанет работать, и будут необходимы более сложные методы.
Можно сделать это просто в sed
:
sed 's/>\([^>]\+\)</\1/' your_file > new_file
извлечь текст между >
и <
на каждой строке. Это предполагает, что у Вас есть один тег на строку.
HTML::Parser
, Я не вижу много точки в дебатах. Я должен доказать, что могу подняться на стену, ослепленную одной рукой за моей спиной, когда существует доступная лестничная структура и никакая потребность в препятствиях? Если бы я мог, я затем рекомендовать это на практике по сравнению с лестничной структурой? Nah. – goldilocks 06.11.2013, 21:53