Regex sed命令不工作

Regex sed命令不工作,regex,shell,sed,Regex,Shell,Sed,sed命令: 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 o/p: 预期: for foo in dristat drmstat$(make check-programs) ; do 有人能告诉我我做错了什么吗?Re:sed-I'ss@fo

sed命令:

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
o/p:

预期:

for foo in dristat drmstat$(make check-programs) ; do
有人能告诉我我做错了什么吗?

Re:sed-I'ss@for在dristat中针对foo的$(进行检查程序)@中的foodrmstat@g"

我怀疑这不是你真正的剧本。你有没有在真实的双引号

for foo in dristat drmstat ;do
现在,您有了一个未scaped的命令替换:
$(make…
)。假设它在您执行此sed作业的环境中运行,并且不产生任何输出。该论点的扩展是:

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

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

请在文件
file1
中获取数据,然后使用以下命令:

for foo in dristat drmstat$(make check-programs) ; do
$
之间有
\
程序之间有


谢谢。

无法复制。确保你使用的引用是你在这篇文章中的引用。(使用
不起作用。)我复制了整个代码和o/p…。它与这里发布的完全相同:-d当你使用一个有趣的shell时-因为使用
bash
,你发布的内容在你发布的文件上按预期工作,而不是你观察到的。我正试图使用此sed命令编辑src rpm的spec文件…。当我将此代码复制到新文件中,并在其上应用此sed命令,成功了..嗯,发生了什么事,你们知道吗?你们试图编辑的原始文件是否是在Windows上创建的?如果是,请使用
dos2unix疑难文件
good luck.sed-我很高兴s@for以美元计价的foo(制作检查程序)@在dristat的foodrmstat@g'filename>filename2它起作用了,我在file2中得到了正确的结果……奇怪的是,请不要这样做:
sed
可以读取文件,所以不应该使用
cat
(它被称为uooc-无用的
cat
)。
for foo in dristat drmstat$(make check-programs) ; do
cat file1|sed 's/\$\(make check-programs\)//g'