我想动态更改文件名为 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", {}))
如何在没有换行符的情况下使其工作?
cat
,但您需要chomp
它附加的换行符。
perl -pe 'BEGIN { $id=`cat .adnid`; chomp $id } s/<SITEID>/$id/ge' -i waf.py
这将添加一个只会执行一次的BEGIN
块。变量使用 cat
读取,然后chomp
ed。替换将应用于文件的每一行。这还有一个额外的好处,即您不会为每一行输入支付cat
。
请注意,BEGIN
的行为与正常情况下不同 -p
.这记录在 perlmod 中靠近大量示例的某个地方。
一种更Perlish的方法是使用open
并从文件中实际读取,您还必须在BEGIN
块中执行此操作。但是对于一次性脚本来说,这并不重要,cat
方式更短。