Вам просто нужно установить репозиторий epel
: yum -y install epel-release
, чтобы сделать пакет openvpn
доступен.
Отсутствует в стандарте awk
(POSIX awk
использует POSIX ERE, которые не поддерживают обратные ссылки, а \1
означает символ 0x1 в awk, хотя есть некоторые неясности). Это возможно с busybox awk
, используя:
busybox awk '$0 ~ "^(.*)o\\1$"'
(что это может или не может делать (независимо от того, должно ли "\\1"
соответствовать буквальному \1
или символ 0x1 или быть неуказанным) неясно в спецификации POSIX. В моем прочтении кажется, что он должен соответствовать символу 0x1, но это не так с /usr/xpg4/bin/sh
например, на Solaris 11, который является сертифицированной ОС (где он соответствует буквальному \1
))
С любым awk
для этого конкретного регулярного выражения вы можете такой подход:
awk 'length % 2 && \
substr($0, (length+1)/2, 1) == "o" && \
substr($0, 1, (length-1)/2) == substr($0, (length+3)/2)'
Как упоминалось выше, ERE POSIX не поддерживают обратные ссылки. GNU sed
с -r
использует ERE, но это GNU ERE, которые поддерживают обратные ссылки как расширение стандарта.Это означает, что
grep -Ex '(.*)o\1'
(или то же самое с egrep
) не является переносимым. Однако:
grep -x '\(.*\)o\1'
является POSIX и переносимым. POSIX BRE поддерживают обратные ссылки, как и исторические реализации grep
. perl
регулярные выражения или PCRE также поддерживают обратные ссылки, поэтому вы можете сделать:
perl -lne 'print if /^(.*)o\1$/'