Я пишу сценарий для установки некоторых вещей, и я испытываю затруднения из-за регулярного выражения, которое я использую. У меня есть Винный репозиторий в моих способных источниках (ppa:ubuntu-wine/ppa), и я использую следующую команду:
apt-cache search wine[0-255].[0-255] | sort -nr
Теперь я ожидал получать 'wine1.7' наверху списка, но он даже не перечислен.
Вместо этого, если я работаю:
apt-cache search wine | sort -nr
Я получаю намного более длинный список (очевидно), он содержит 'wine1.7'. Список, который сбои действительно показывают нескольким корректным объектам, которые соответствуют моему regex, но не столько сколько без. Это несколько примеров:
Поскольку Вы бьете тростью, видят, что 'wine1.5' является списком, но не 'wine1.7'. Существует ли лучший способ получить этот тип списка?
Или еще лучше простой способ найти, что последняя версия из списка устанавливает?
Спасибо, Noki
Это не то, как классы символов работают, regex не дифференцируется между 26
и 2
сопровождаемый 6
, таким образом, Ваш класс символов интерпретируется как 1-2
или 5
. Кроме того, эти .
означает, "соответствуют любому символу", не литерал .
, я не думаю apt
, regex механизм позволяет выходить, таким образом, необходимо было бы использовать класс символов для соответствия ему ([.]
). Наконец, у Вас должно быть несколько случаев каждого числа, таким образом, Вам нужно что-то как:
apt-cache search --names-only wine[0-9]+[.]*[0-9]*
Эти --names-only
гарантирует, что Ваш regex только подобран agaist имена пакета, не описания.