在sed file内部替换变量



我已经通过所有可能的答案了,但是我仍然无法使我的脚本工作。

我在SPARQL中有一个查询脚本,其行需要用"<>"之间的变量替换标记%贡献者%

?link dcterms:contributor %contributor%

进入

 ?link dcterms:contributor <http://newurl>

如果我在外壳中执行代码,则可以正确完成替换,并且我看到了我的查询,并使用%贡献者%标签成功替换。但是,即使使用Double $$ 美元,也可以在makefile内部执行时,以允许扩展变量我无法完成。

for l in `cat sref.csv`; do 
    QUERY=$$(cat queries/table_knowledge.rq | sed "s@%contributor%@<$$l>@g") ; 
    echo $$QUERY ; 
done

也喜欢这样做:

QUERY=$$(cat queries/table_knowledge.rq | sed 's/%contributor%/<$(l)>/g') ; 

QUERY=$$(cat queries/table_knowledge.rq | sed 's/%contributor%/<${l}>/g') ; 

使用双引号,以便SED扩展变量。
使用与/不同的分离器,因为替换包含/

QUERY=$(cat queries/table_knowledge.rq | sed "s|%contributor%|<${l}>|g") ;

测试:

$ test="http://test.com"
$ echo "?link dcterms:contributor %contributor%" > source.file
$ x=$(cat source.file|sed "s|%contributor%|<${test}>|g")
$ echo $x
?link dcterms:contributor <http://test.com>

最新更新