grep bash中包含一些变量的字符串

grep bash中包含一些变量的字符串,bash,sed,grep,makefile,string-concatenation,Bash,Sed,Grep,Makefile,String Concatenation,我已经挣扎了两个小时,想弄清楚关于我这个剧本的问题。当我在没有任何变量的情况下静态使用它时,它会获取grep结果,但是当我将它们与这些变量放在一起时,我会不断收到错误,并且没有结果。我相信这个特殊角色的逃逸有些问题,我无法处理 我将文件标志_与此结构结合在一起: automotive_susan_s dataset1 -funsafe-math-optimizations -fno-guess-branch-probability -fno-ivopts -fno-inline-functio

我已经挣扎了两个小时,想弄清楚关于我这个剧本的问题。当我在没有任何变量的情况下静态使用它时,它会获取grep结果,但是当我将它们与这些变量放在一起时,我会不断收到错误,并且没有结果。我相信这个特殊角色的逃逸有些问题,我无法处理

我将文件标志_与此结构结合在一起:

automotive_susan_s dataset1 -funsafe-math-optimizations -fno-guess-branch-probability -fno-ivopts  -fno-inline-functions  -fno-omit-frame-pointer  -fselective-scheduling -fno-inline-small-functions -fno-tree-pre -ftracer -fno-move-loop-invariants
具有AppName中i的标志和上面结构化的数据集$j。有人能帮我找出我的sh脚本的这部分有什么问题吗

GCC_OPT="-O3"
OPT_FLAGS=$("grep $i\ dataset$j\ $FLAGS_IN|sed\ s/$i\ dataset$j//g")
echo $GCC_OPT
echo $OPT_FLAGS
echo "found the validated flags, they are \n $GCC_OPT $OPT_FLAGS"
make -f Makefile.gcc -j4 CCC_OPTS="$GCC_OPT\ $OPT_FLAG"

你的引用有点过分热情。此外,这里使用
cut
比使用
sed
更容易一些

OPT_FLAGS=$(grep "$i dataset$j" FLAGS_IN | cut -d " " -f3-)


这就是你想要做的:

$ cat file
foo
automotive_susan_s dataset1 -funsafe-math-optimizations ...
bar

$ i=automotive_susan_s
$ j=1

$ sed -n "s/$i dataset$j//p" file
 -funsafe-math-optimizations ...

非常感谢好友的grep部分(我想你可能忘了在FALGS_IN中添加$),但是剪切部分仍然没有修剪匹配的grep字符串。我发现,我可以使用
|cut-d”“-f3-
进行匹配和排除。无论如何,非常感谢,伙计,如果你编辑你的答案,我会接受;)是的,我想从输出中排除匹配的grep字符串,我最终可以用@chepner-answer完成。不过还是要谢谢你的回答;)
$ cat file
foo
automotive_susan_s dataset1 -funsafe-math-optimizations ...
bar

$ i=automotive_susan_s
$ j=1

$ sed -n "s/$i dataset$j//p" file
 -funsafe-math-optimizations ...