Похоже, что репозиторий пакетов, из которого вы получаете обновления Kali, завершил последний цикл зеркалирования как раз в тот момент, когда человек, ответственный за пакеты Kali vim
, занимался их обновлением.
В результате у вас теперь vim-runtime
версия 2 :8.1.0875 -1, но vim-common
версия 2 :8.1.0875 -2. Также похоже на ваш vim
пакет также обновлен до 2 :8.1.0875 -2.
Вы можете попробовать сделать это:
apt-get --allow-downgrades install vim-gtk=2:8.1.0875-1 vim-common=2:8.1.0875-1 vim=2:8.1.0875-1
чтобы принудительно установить все vim
пакеты на версию 2 :8.1.0875 -1. Затем подождите некоторое время (может быть, несколько часов, вплоть до дня или около того ), чтобы разрешить ваш пакет репозиторий, чтобы завершить еще один цикл зеркального отображения, а затем повторите попытку обновления.
Если это не решит проблему,может быть проблема в зеркале репозитория пакетов, которое вы используете. Проверьте /etc/apt/sources.list
и/или файлы в каталоге /etc/apt/sources.list.d/
на наличие имени хоста используемого зеркала apt и переключитесь на другой зеркальный репозиторий Kali и/или свяжитесь с администратором зеркального сервера репозитория и сообщите о проблеме.
Список официальных зеркал сервера репозитория Kali можно найти здесь.
Здесь можно использовать двойные кавычки:
$ sed "s/'[^']*'/\"verified\"/g" ip.txt
Haarlem -m "verified" -n "verified" aalsmeer > "goes to"
Roterdam -m "verified" -n "verified" amsterdam > "goes to"
'[^']*'
соответствует '
, за которым следуют не '
символы и снова '
символ '.*'
, потому что это будет соответствовать от первого '
до последнего '
в строке ввода \"verified\"
использовать "verified"
в качестве строки замены, двойные кавычки экранированы, потому что они используются внутри двойных кавычек См. также:https://mywiki.wooledge.org/Quotesи Почему мое регулярное выражение работает в X, но не в Y?(для разницы между регулярным выражением и подстановочными знаками)
Вопрос был обновлен после вышеуказанного решения.
$ cat ip.txt
Haarlem -m 'foo' -n 'bar' aalsmeer > "goes to" -t 'value'
Roterdam -m 'foo2' -n 'bar2' amsterdam > "goes to" -t 'value'
$ sed -E "s/(-[mn] )'[^']*'/\1\"verified\"/g" ip.txt
Haarlem -m "verified" -n "verified" aalsmeer > "goes to" -t 'value'
Roterdam -m "verified" -n "verified" amsterdam > "goes to" -t 'value'
-[mn]
будет соответствовать либо -m
, либо-n
(-[mn] )
— это группа захвата, совпадающий контент повторно используется в разделе замены как\1
Вы также можете использовать
sed -E "s/(-[^t] )'[^']*'/\1\"verified\"/g" ip.txt
для предотвращения замены только -t '..'
и сопоставления всех других шаблонов с одинарными кавычками, которым предшествует -<char>
и пробел