我想动态地更改文件上的某些值,名称为waf.py。
这条线是这样的
pp.pprint(api.post("/sites/<SITEID>/waf", {}))
我已将值存储到另一个名为.adnid
我正在使用命令处理
perl -pe 's/<SITEID>/`cat .adnid`/ge' -i waf.py
它会替换内容,但会在其上添加\n
(输入),其余内容会转到新行,例如
pp.pprint(api.post("/sites/626041
/waf", {}))
而不是例外(1行)
pp.pprint(api.post("/sites/626041/waf", {}))
如何在没有换行符的情况下使其正常工作?
答案 0 :(得分:2)
您可以使用cat
,但需要chomp
关闭它附加的换行符。
perl -pe 'BEGIN { $id=`cat .adnid`; chomp $id } s/<SITEID>/$id/ge' -i waf.py
这会添加一个BEGIN
块,只执行一次。使用cat
然后chomp
编辑读取变量。替换将应用于文件的每一行。这样做的另一个好处是,您不会因为每一行输入而向cat
发送消息。
请注意,BEGIN
的行为与-p
的正常行为不同。这在perlmod中记录在靠近大块示例的地方。
更多Perlish方式是使用open
并实际读取文件,您还必须在BEGIN
块中执行此操作。但对于丢失的脚本而言,它并不重要,cat
方式更短。