Вы не делаете ничего плохого. Пакет неправильно подписывается.
От потока на lists.rpmfusion.org:
Вы знаете о других пакетах, которые должны были бы быть оставлены, также? a52dec является всего одним примером.
После того как измененный пакет прибывает в зеркала, устанавливание его, скорее всего, будет хорошо работать (требование "конфетки чистые пакеты", однако, для чистки кэша пакета).
В то время как это было в отношении Fedora 16 пакетами, по всей вероятности - Ваш пакет также страдает от той же судьбы плохой подписи. Считайте остальных на lists.rpmfusion.org.
Один способ сделать его состоял бы в том, чтобы считать файл однажды для получения max
и с другой стороны распечатать соответствующие строки:
max=$(awk 'NR>1 && $5>max {max=$5}; END{print max}' file.txt) &&
awk -v max="$max" '$5==max' file.txt
Или, более кратко:
awk -v m="$(awk '(NR>1 && $5>m){m=$5};END{print m}' file.txt)" '$5==m' file.txt
Прием здесь является awk's -v
флаг, который позволяет Вам передавать переменную awk
. В этом случае я сначала вычисляю макс. значение и затем даю его awk
как переменная max
.
Это - довольно типичная проблема, для которой идиоматическое awk решение, включающее два, передает по файлу, существует. В первичной обработке определите макс. значение для $5
и во втором, извлеките записи, которые содержат то макс. значение в $5
. Вот быстрый пример.
awk 'NR == FNR && NR > 1{max = max < $5? $5: max; next}; $5 == max{print}' file.txt file.txt
Если бы использование памяти не является действительно проблемой, версия с одной передачей в жемчуге, вероятно, была бы:
perl -ane 'END { $"=""; print "@res"; } if($F[4] =~ /^\d+/ and $F[4] > $max) {
$max = $F[4]; @res = (); } push @res, $_ if($F[4] =~ /^\d+$/ and $max == $F[4]);' infile
-n
говорит жемчугу обрабатывать infile
одна строка во время, передавая каждую строку командам, указанным в -e
. -a
говорит жемчугу разворачивать каждую строку вокруг разделителя полей (это принимает значение по умолчанию для интервала), и присвойте это названному массиву @F
. Результат для каждой строки, мы можем обработать его и использование $F[n]
обращаться к энному элементу той строки.
Сам жемчуг:
END { $"=""; print "@res"; } # at the end of execution set the field separator to
# empty and print the contents of @res, which includes
# newlines when the matching rows were stored
if($F[4] =~ /^\d+/ and $F[4] > $max) { # if the 5th element of the line is solely a
$max = $F[4]; @res = (); # number and it's greater than $max (which
} # starts as undefined), set $max to this number
# and empty the @res results array.
push @res, $_ # push this line to @res ...
if($F[4] =~ /^\d+$/ and $max == $F[4]); # IF the 5th element is solely a
# number and equal to $max
Логика - это $max
запускается как неопределенный и @res
пустой массив. В первый раз, когда мы находим число в столбце 5, мы храним это в $max
и пустой @res
. Это также имеет побочный эффект освобождения @res
если мы находим новое максимальное значение в столбце 5 на следующих строках. Как отдельная проверка, если столбец 5 равен $max
добавьте эту строку к @res
(снабдите строки существующим максимальным значением). Повторитесь для всех строк, и затем END { }
блок выполняется, который печатает содержание @res
массив результатов без ведущего разделителя полей пространства обычно начался $"
.
Это могло также, вероятно, быть достигнуто в awk
, но мой awk-fu
не является настолько большим!
Отсортируйте файл со значениями в порядке убывания, затем распечатайте строки от вершины, пока значение не изменится.
sort -k 5n | awk 'NR==1 {max=$5} $5!=max {quit} {print}'