Вы можете указать apt-get
установить определенную версию пакета. Для вашего примера:
apt-get install subversion
вы добавите версию к имени пакета, например,
apt-get install subversion=1.9.2-1
Чтобы найти версию пакета, на странице вики Debian RollbackUpdate показан пример, где эта информация находится в
http://www.debian.org/distrib/packages, то есть,
https://www.debian.org/distrib/packages#search_packages
или (более старые версии) через
http://snapshot.debian.org/
http://snapshot.debian.org/package/subversion/
показывает
http://snapshot.debian.org/package/subversion/1.9.2-2/
http://snapshot.debian.org/package/subversion/1.9.2-1/
http://snapshot.debian.org/package/subversion/1.9.1-1/
и так далее.
Наконец, страница Debian показывает (для примера), что нужно изменить в /etc/apt/preferences
, чтобы подключить пакет.
Команда cut разграничивает только один символ за раз. Таким образом, вы можете преобразовать кавычки и запятые в другой односимвольный разделитель, используя sed и регулярное выражение. Например:
sed -e 's/","\|",\|,"\|,,/@/g' /path/to/file | cut -d@ -f2
Вернется
hopper
Другой способ — использовать AWK. Например, следующее даст вам 2-е поле.
awk -F ',,|^"|","|",|,"|"$' '{print $3}' /path/to/file
вернется
hopper
Приведенные выше примеры не идеальны, поскольку они не обрабатывают правильно все случаи с несколькими пустыми полями и внешними кавычками. Лучше всего использовать язык сценариев более высокого уровня с модулем синтаксического анализа CSV.
Формат CSV имеет достаточно пограничных случаев, поэтому вам не нужно заново изобретать его синтаксический анализ. Используйте правильный парсер CSV. Например, с рубином
ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|row| puts row[1]}' file