команда sed не работает - PullRequest
       11

команда sed не работает

1 голос
/ 17 марта 2012
pushd tests
mkdir -p $RPM_BUILD_ROOT%{_bindir}
for foo in $(make check-programs) ; do
 install -m 0755 .libs/$foo $RPM_BUILD_ROOT%{_bindir}
done
popd

sed команда:

sed -i 's@for foo in $(make check-programs)@for foo in dristat drmstat@g'

o / p:

for foo in dristat drmstat$(make check-programs) ; do

ожидается:

for foo in dristat drmstat ;do

Может кто-нибудь сказать мне, что я делаюнеправильно?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Re: sed -i 's @ для foo in $ (создайте контрольные программы) @for foo в dristat drmstat @ g'

Я подозреваю, что это не ваш настоящий сценарий. У вас случайно не было двойных кавычек в реальной?

# as in:
sed -i "s@for foo in $(make check-programs)@for foo in dristat drmstat@g"

Теперь у вас есть подстановка неэкранированной команды: $(make ...). Предположим, что это выполняется в среде, где вы выполняете эту задание sed, и не выдает результатов. Расширение этого аргумента тогда:

s@for foo in @for foo in dristat drmstat@g

И это даст:

for foo in dristat drmstat$(make check-programs) ; do
0 голосов
/ 13 марта 2016

Пожалуйста, возьмите данные в файле file1, затем используйте эту команду:

cat file1|sed 's/\$\(make check-programs\)//g'

существует \ между $ и ( и между programs и )

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...