(Это предшественник vi и все еще является частью vi.)
printf '%s\n' '0/Fred Flintstone///s/$/ someString/' x | ex filename
3] Магия здесь заключается в том, что в отличие от Sed, Awk и подобных инструментов, ex не запускает код на каждой строке. Вы можете перемещать курсор вокруг, давать команды и т. Д. В этом случае мы укажем номер строки 0 (что гарантирует, что Фред Флинтстон на первой строке будет учтен), а затем регулярное выражение /Fred Flintstone/, которое ссылается на первую строку в файле, соответствующем этому регулярному выражению, за которым следует другое регулярное выражение //, которое, будучи пустым, повторно использует последнее регулярное выражение и поэтому ссылается на вторую строку в файле, который соответствует; а затем мы используем команду s, которую вы уже знаете.
Команда x означает сохранение любых изменений и выход.
Мы используем printf для подачи команд на ex.
Я включил все свои 32-битные пакеты следующим образом:
sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Верхние автоматизированные решения опасны и не всегда работают (1), поэтому здесь другой путь
sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
или
sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
(Старайтесь использовать всегда и только один из-за того, что aptitude лучше при проблемах с зависимостью, я предпочитаю это.)
Хорошая идея также
dpkg --remove-architecture i386
и, возможно,
dpkg --print-foreign-architectures
[d5 ] (1) В предыдущих командах также перечислены пакеты, имеющие только имя i386 (хотя они предназначены для архитектуры с 64-разрядной архитектурой), регулярное выражение не работает, а dpkg показывает пакеты, которые уже удалены, но все еще остаются файлы конфигурации (dpkg - l показывает «rc» вместо «ii» как статус). В случае, если кто-то задается вопросом, есть гораздо более разумный и изящный способ сделать это. Последний предыдущий ответ надеется сделать то же самое, но этот поиск завершается неудачно, поскольку архитектуры не являются фактически частью имен пакетов, за исключением особых случаев.
с правами root (или с sudo):
aptitude remove ~i~ri386
Если вы еще не используете aptitude над apt-get, сделайте это. Это действительно отлично. Здесь вы можете найти список условий поиска aptitude.
Другим способом является еще более низкий риск:
apt-get remove "^.*:i386$"
Это будет конкретно соответствовать только пакетам, заканчивающимся на ":i386", что является стандартным соглашением об именах для всех i386 архитектура пакетов Debian.
В руководстве multiarch debian упоминается эта команда: apt-get purge ".*:<arch>", которая будет выглядеть так для i386:
apt-get purge ".*:i386"
Затем вы можете удалить архитектуру из dpkg:
dpkg --remove-architecture i386