Ubuntu apt не работает

Да, в (укажите регулярное выражение, иначе оно будет интерпретировано как глобус оболочки):

grep -Eq '[0-9]{7}' <<< "1505082"

grep соответствует 7 цифрам. Вы можете увидеть, что сопоставляется, заменив q наo:

$ grep -Eo '[0-9]{7}' <<< "1505082"; echo "$?"
1505082
0

И да, это тоже будет соответствовать этому:

$ grep -Eq '[0-9]{7}' <<< "150508299999"; echo "$?"
1505082
0

Он убрал все девятки.
Проблема в том, что вы делаете не привязанное соответствие -, и оно будет соответствовать 7-значному(или более)числу.

Вы можете закрепить с помощью:

$ grep -Eq '^[0-9]{7}$' <<< "15050829999"; echo "$?"
1

Чтобы сопоставить 7-значное число в любом месте , за которым или перед которым стоят не -цифры, вам нужен совершенно другой якорь:

$ grep -oP '(?<=^|[^0-9])[0-9]{7}(?=[^0-9]|$)' <<< "1505082"; echo $?
1505082
0

$ grep -oP '(?<=^|[^0-9])[0-9]{7}(?=[^0-9]|$)' <<< "1505082_CSE_322"; echo $?
1505082
0

$ grep -oP '(?<=^|[^0-9])[0-9]{7}(?=[^0-9]|$)' <<< "1505082999_CSE_322"; echo $?
0

Это просмотр вперед, один просмотр -назад:

(?<=^|[^0-9])

Это соответствует либо началу строки (^), либо цифре, отличной от -. Другой — прогноз:

(?=[^0-9]|$)

, которые соответствуют цифре, отличной от -, или концу строки.


Единственная другая альтернатива более простому Extendedрегулярному выражению – извлечь любую серию из7(или более )цифр, а затем подтвердить, что это ровно 7 цифр:

$ echo "150508299_CSE_322" | 
          grep -oE '[0-9]{7,}' | 
                  grep -qE '^[0-9]{7}$'; echo "$?"
1
0
13.01.2021, 14:39
1 ответ

Первое, что нужно сделать, это удалить kali-rollingиз вашего sources.list, потому что это сломает ваш apt, а затем запустить:

sudo apt update

Следующий шаг: используйте параметр --force-overwriteдля принудительной установки пакета:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libgstreamer-plugins-bad1.0-0_1.18.0-2+b1_amd64.deb

, а затем:

sudo apt install -f
sudo apt update
sudo apt upgrade
1
18.03.2021, 22:37

Теги

Похожие вопросы