Почему я получаю сообщение об ошибке & ldquo; missing terminating] для класса символов & rdquo ;?

Хорошо, я исправился. Мне пришлось вручную удалить пакет, а затем принудительно удалить dpkg. Впоследствии я установил его из git-core, и это отлично работало. Чтобы вручную удалить пакет, я пошел в

/var/cache/apt/archives

и удалил файл git_1%3a1.7.4.1-3_i386.deb. После этого я пошел в

/var/lib/dpkg/info

И сделал ls | grep git и удалил все, что появилось. Впоследствии я запустил

sudo dpkg --remove --force-remove-reinstreq git

, чтобы очистить dpkg пакета. Как только это было сделано, мне удалось установить git из git-core вместо пакета git, и он работал нормально.

3
задан 23 February 2018 в 17:05

6 ответов

Поскольку ошибка, отсутствующая в завершении] для символьного класса, уже говорит, проблема здесь связана с [, которую вам нужно избежать. В противном случае это понимается как класс символов grep.

Кроме того, вы говорите //, в то время как вы хотите использовать / вместо \ в соответствии с вашим вводом.

Все вместе, это печатает набор слов после [Om/:

$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+'
mystring
7
ответ дан 22 May 2018 в 12:57
  • 1
    Я не думаю, что "g" в " \ grep " необходимо избегать. – cpburnz 23 February 2018 в 03:00
  • 2
    @cpburnz - это трюк, чтобы избежать его интерпретации как псевдонима оболочки. Я думаю, он сделал это, чтобы избежать своего собственного псевдонима, проверяя это в оболочке. – JoL 23 February 2018 в 03:17

Поскольку ошибка, отсутствующая в завершении] для символьного класса, уже говорит, проблема здесь связана с [, которую вам нужно избежать. В противном случае это понимается как класс символов grep.

Кроме того, вы говорите //, в то время как вы хотите использовать / вместо \ в соответствии с вашим вводом.

Все вместе, это печатает набор слов после [Om/:

$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+' mystring
7
ответ дан 17 July 2018 в 20:13

Поскольку ошибка, отсутствующая в завершении] для символьного класса, уже говорит, проблема здесь связана с [, которую вам нужно избежать. В противном случае это понимается как класс символов grep.

Кроме того, вы говорите //, в то время как вы хотите использовать / вместо \ в соответствии с вашим вводом.

Все вместе, это печатает набор слов после [Om/:

$ echo '[Om/mystring' | \grep -oP '(?<=\[Om\/)\w+' mystring
7
ответ дан 23 July 2018 в 20:56

Вы получаете ошибку, потому что [ является специальным символом в синтаксисе регулярных выражений, представляя класс символов. Чтобы быть обработанным как строковый литерал, он должен быть экранирован, т. Е. [F3]

Если вы просто хотите удалить префикс [Om/, то это будет проще, если вы используете разделитель, который не отображается в шаблон:

$ echo '[Om/mystring' | sed 's;\[Om/;;'
mystring
6
ответ дан 22 May 2018 в 12:57
  • 1
    Вы также можете добавить якорь ^, чтобы он соответствовал началу строки. – fedorqui 22 February 2018 в 19:00

Вы получаете ошибку, потому что [ является специальным символом в синтаксисе регулярных выражений, представляя класс символов. Чтобы быть обработанным как строковый литерал, он должен быть экранирован, т. Е. [F3]

Если вы просто хотите удалить префикс [Om/, то это будет проще, если вы используете разделитель, который не отображается в шаблон:

$ echo '[Om/mystring' | sed 's;\[Om/;;' mystring
6
ответ дан 17 July 2018 в 20:13

Вы получаете ошибку, потому что [ является специальным символом в синтаксисе регулярных выражений, представляя класс символов. Чтобы быть обработанным как строковый литерал, он должен быть экранирован, т. Е. [F3]

Если вы просто хотите удалить префикс [Om/, то это будет проще, если вы используете разделитель, который не отображается в шаблон:

$ echo '[Om/mystring' | sed 's;\[Om/;;' mystring
6
ответ дан 23 July 2018 в 20:56
  • 1
    Вы также можете добавить якорь ^, чтобы он соответствовал началу строки. – fedorqui 22 February 2018 в 19:00

Другие вопросы по тегам:

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