Вот что мне нужно было сделать ...
Во-первых, удалите пакет nodejs, установленный из EPEL:
sudo yum remove nodejs
Перечислите ваши репозитории yum:
yum repolist
Вот как выглядела моя запись репозитория узла:
nodesource / x86_64 Пакеты Node.js для Enterprise Linux 7 - x86_64
Если вам интересно, перечислите пакеты в репозитории узлов:
yum --disablerepo="*" --enablerepo="nodesource" list available
Затем выполните установку yum, используя только репозиторий узлов:
yum --disablerepo="*" --enablerepo="nodesource" install nodejs
Я подозреваю, что в схеме нумерации, используемой в репозитории узлов, есть что-то, что не представляет nodejs в качестве замены пакета в репозитории EPEL, но это всего лишь предположение.
Вы можете использовать любой символ в качестве разделителя команд s
, например,
sed -i -e "s|$answer|$FORME $answer|g" ~$answer.txt
Удивительно, но этот вопрос задают и отвечают на него по всему Stack Exchange, но два обычно полезных ответа на этот очень резонный вопрос — это иголки в стоге сена. Они:
1. Экранируйте только 4 возможных специальных символа в вашей переменной
Как указано здесь (, несмотря на то, что вопрос стал жертвой отвращения SE к общим вопросам ), только 4 символа считаются специальными в замещающей части команды sed s
:\
, &
, новая строка и разделитель (обычно /
, но на самом деле могут быть чем угодно ).
Таким образом, чтобы использовать произвольную переменную в качестве замены в sed, сначала избегайте любых вхождений этих четырех символов, например так:
REPL='Arbitrary variable potentially with special characters like / and & and \ and
newline\
newline2'
REPL=$(sed -e 's/[&\\/]/\\&/g; s/$/\\/' -e '$s/\\$//' <<<"$REPL")
hexdump -C <<< "$REPL"
Например:
REPL='/&\
newline'
REPL=$(sed -e 's/[&\\/]/\\&/g; s/$/\\/' -e '$s/\\$//' <<<"$REPL")
sed "s/x/$REPL/" <<< "STARTxEND"
производит:
START/&\
newlineEND
как и ожидалось.
2. Используйте эквивалентный инструмент, который дословно интерпретирует замещающую переменную
perl
(ref)имеет эту возможность, потому что переменные (при условии, что они являются частью среды путем их экспорта или установки их в строке вызова ), являются гражданами первого класса. Примечание \Q
не требуется в строке замены (, но полезно в строке регулярного выражения ).
export REPL='/&\
newline'
perl -pe 's/x/$ENV{REPL}/' <<< "STARTxEND"
производит:
START/&\
newlineEND
awk
,несмотря на ссылка , нет.