В моем случае эта ошибка вызывалась при запуске «yum update» из-за локального репозитория, который я вручную добавил в каталог /etc/yum.repo.d
.
Я создал файл myrepo.repo и в строке «baseurl» дважды ввел «http: //», то есть:
baseurl = http: // http: //isblcncldrp0001.scisb.isban.corp : 8900 / cm / 5 /
Итак, как видите, baseurl неверен. Я удалил лишние «http: //», и «yum update» прошло успешно.
В Perl (и PCRE) это достижимо с помощью lookbehind нулевой ширины:
(?<=funnyword).*$
который соответствует "funnyword", но не использует его как часть соответствия. Они работают только с текстом фиксированной длины в lookbehind. Вы также можете использовать отрицательные lookbehinds ((?), чтобы указать, что некоторый текст отсутствует.
В любой достаточно новой версии Perl, \K
является почти точной заменой \zs
как вы его используете:
funnyword\K.*$
\K
отбрасывает все найденное до сих пор, но продолжает поиск с этого момента. Часть перед \K
не обязательно должна быть фиксированной длины. Это также есть в PCRE сейчас, но я не уверен, в какой версии это появилось.
\ze
может быть достигнуто с помощью заблаговременного просмотра нулевой ширины, используя (?=...)
. Этот шаблон не должен быть фиксированной длины.
Поскольку sed использует POSIX BREs, нет никакого обходного пути. Однако в этом случае вы можете довольно легко смоделировать его с помощью обычной группы захвата:
sed -e 's/\(funnyword\).*$/\1otherword/'
То же самое можно сделать для положительного lookahead. Если у вас действительно более сложное требование, возможно, вам придется обратиться к Perl или какому-то другому подходу.